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

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

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

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

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

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

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

Jeen Broekstra 08.04.2018 02:05

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

Coderr19 08.04.2018 02:14

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

Jeen Broekstra 08.04.2018 02:25

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

jschnasse 09.04.2018 17:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
114
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Выше, кстати, синтаксис Turtle, более простой для чтения / записи синтаксис для 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 08.04.2018 02:35

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

UninformedUser 08.04.2018 10:06

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

Jeen Broekstra 08.04.2018 12:55

Другие вопросы по теме