Ссылки на классы в RDF/XML

avatar
Coderr19
7 апреля 2018 в 22:01
150
1
2

Я пытаюсь понять основы RDF/XML. У меня проблема с пониманием ссылок на данные.

В качестве простого примера рассмотрим отношения между Person и Document.

В реляционной модели данных это может быть простая связь «один ко многим» (человек может иметь много документов, но документ может принадлежать только одному человеку). Таким образом, это можно решить, указав person_id в таблице документов.

Но как добиться чего-то подобного в RDF/XML?

Я определяю свой <namespace:Person rdf:about="http://www.foo.com"> со всеми атрибутами, и у меня также есть <namespace:Document rdf:about="http://www.bar.com">, но как правильно сказать, что документ принадлежит человеку, чей id = x?

Источник
Jeen Broekstra
8 апреля 2018 в 00:05
1

Не сразу ответ, но могу ли я порекомендовать вам не пытаться понять, как работает RDF, пытаясь читать/писать RDF/XML? RDF/XML является одной из возможных форм синтаксиса для RDF, и его очень трудно читать. Вместо этого прочитайте, как работает модель RDF.

Coderr19
8 апреля 2018 в 00:14
0

@JeenBroekstra Спасибо за предложение, но на самом деле мне поручено найти решение проблемы. Ожидается, что я придумаю файл RDF/XML и схему RDF.

Jeen Broekstra
8 апреля 2018 в 00:25
0

решать вам, конечно, но все же проще сначала изучить абстрактную модель и, возможно, использовать другой синтаксис (например, Turtle), который легче понять. Существует много бесплатных инструментов с открытым исходным кодом, которые могут преобразовать ваш RDF в формат синтаксиса RDF/XML после того, как вы закончите моделирование.

jschnasse
9 апреля 2018 в 15:07
0

Может быть, вы найдете этот ответ на «Что такое тройка rdf?» полезный. Он пытается объяснить понятие "тройки rdf" на примере простого отношения/таблицы.

Ответы (1)

avatar
Jeen Broekstra
8 апреля 2018 в 00:18
4

RDF — это модель, в которой для выражения данных используются тройки (также известные как RDF операторы). Каждое утверждение имеет субъект, сказуемое и объект. Как правило, сказуемое выражает отношение между подлежащим и дополнением. Набор таких утверждений можно рассматривать как граф (где субъекты и объекты являются вершинами, а предикаты — ребрами).

Итак, в вашем примере с Документами и Лицами давайте прежде всего установим какие<61732225284570> отношения имеют Документы и Лица. Для примера предположим, что вы хотите указать, что у Документа есть автор, который является Человеком.

Если мы применим это к конкретному Документу ex:d1 и конкретному лицу ex:p1, мы просто напишем следующие триплеты, чтобы выразить отношение:

ex:d1 a ex:Document;
      ex:hasAuthor ex:p1 .
ex:p1 a ex:Person .

Кстати, приведенный выше синтаксис черепахи проще для чтения/записи для RDF. Подробнее см. в RDF Primer.

В синтаксисе RDF/XML те же данные будут выглядеть примерно так:

<ex:Document rdf:about="http://example.org/d1">
   <ex:hasAuthor rdf:resource="http://example.org/p1"/>
</ex:Document>
<ex:Person rdf:about="http://example.org/p1"/>

Но, как я упоминал в своем комментарии: более эффективно пытаться понять RDF-моделирование абстрактно (думая о триплетах и ​​графах), чем пытаться понять, как писать RDF/XML.

Вернемся к примеру: выше показано, как вы моделируете отношение между конкретным документом и конкретным человеком. Если вы хотите выразить более общую информацию о том, что «документы и лица являются классами, которые могут быть связаны через отношение автора», вы можете использовать словарь схемы RDF. Вы могли бы выразить это следующим образом:

ex:Document a rdfs:Class .
ex:Person a rdfs:Class .
ex:hasAuthor a rdf:Property ;
             rdfs:domain ex:Document ;
             rdfs:range ex:Person .

Обратите внимание, что схема RDF — это не то же самое, что реляционная схема! Цель реляционной схемы состоит в том, чтобы предписать структуру и разрешить проверку данных. Словарь RDF (или онтология) используется для описания мира. Все вышесказанное говорит о том, что документы и люди существуют в нашем мире, и если между двумя вещами существует «авторская» связь, эти две вещи являются документами и людьми.

Coderr19
8 апреля 2018 в 00:35
0

Это отличное объяснение! Спасибо! :)

UninformedUser
8 апреля 2018 в 08:06
0

@ Coderr19 Мне интересно, почему вы тогда не прочитали это в учебнике по RDF? Это основная точка входа, чтение рекомендаций W3C, и, с моей точки зрения, большинство вещей в них объяснено достаточно даже с примерами. В любом случае, +1 для Джин

Jeen Broekstra
8 апреля 2018 в 10:55
0

@AKSW Я не знаю, читал ли OP букварь или нет, но часто бывает полезно объяснить вам одно и то же разными словами (по крайней мере, мне это часто помогает). Так что не зря ИМХО.