Простой пример овеществления в RDF
Кто-нибудь может быть так любезен, чтобы дать мне простой пример овеществления в RDF? Я хочу посмотреть, правильно ли я понял.
Например, я предлагаю следующий случай
Tolkien -> wrote -> Lord of the rings
/|\
|
Wikipedia said that
Как бы вы написали это с реификацией и без нее (то есть как простое утверждение RDF без необходимости реификации)?
3 ответа
"Толкин написал Властелин колец" можно выразить как простое утверждение (субъект, предикат, объект), например:
:Tolkien :wrote :LordOfTheRings .
Кстати, это использует обозначение Turtle для RDF. В Интернете есть инструменты для его преобразования в RDF/XML.
Используя reification, вы можете иметь отдельный ресурс, представляющий оператор, так что вы можете указать дополнительные вещи о самом операторе, такие как "Википедия сказала, что":
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
_:x rdf:type rdf:Statement .
_:x rdf:subject :Tolkien .
_:x rdf:predicate :wrote .
_:x rdf:object :LordOfTheRings .
_:x :said :Wikipedia .
В реальной жизни вы хотели бы использовать общие словари, чтобы тот, кто или что бы ни потреблял RDF, пожелал, чтобы вы говорили об этом Толкине и этом LOTR:
<http://dbpedia.org/resource/The_Lord_of_the_Rings> <http://dbpedia.org/property/author> <http://dbpedia.org/resource/dbppedia/J._R._R._Tolkien> .
К сожалению, до настоящего времени экземпляры отношений, то есть то, что в документах W3C называют элементами расширения отношения, или то, что в математике вы бы назвали парами, которые являются элементами отношения, не считаются первым классом. граждане.
Экосистема семантической паутины претендует на лозунг ААА, что любой может сказать что угодно о чем угодно. Но это не так, если первое "что-нибудь" здесь - это одно ребро графа. Даже если сам RDF имеет средства для выражения знаний об одном ребре, документ семантики R3F W3C делает все возможное, чтобы не поддерживать эту выразительность.
В основном, есть 4 подхода, чтобы сказать что-то о ребре: - непопулярные, раздутые слабо связанные операторы RDF - синглтоны свойств - один оператор с именем графы (4-й элемент в четырехугольнике - это идентификатор графа) - узлы ассоциации (аналогично классам ассоциаций UML)
Одиночные свойства - безусловно, самое простое решение проблемы, поскольку они ничего не добавляют - вы просто избегаете ошибки, чтобы [повторно] использовать идентификатор свойства уровня класса для ребер экземпляра снова и снова. Другие моделирующие экосистемы, которые имеют четкое понимание метамоделирования (например, MOF), гораздо менее склонны совершать такую ошибку. Ребра уровня класса соединяют узлы уровня класса, а ребра уровня экземпляра соединяют узлы уровня экземпляра. Вот и все.
Если вы сделаете это правильно (как это предлагает Винь и его коллеги), вы находитесь на пути конфликта с рассуждениями, которые жестко запрограммированы в документе семантики W3C RDF.
Вы можете временно обойти это (пока W3C еще не стандартизировал синглеты свойств), сделав еще один недостаток дизайна и реализовав свои синглеты свойств как subPropertyOf-s свойства уровня класса [вместо того, чтобы делать их экземплярами этого]. Тогда существующий аргумент RDFS будет заключен из:my_label_0815 rdfs:subPropertyOf rdfs:label .:some_node:my_label_0815 "some_string" . что:some_node rdfs: метка "some_string". Это грязный обходной путь, поскольку он нарушает четкое разделение метауровней.
У нас так много ужасно разработанных моделей, просто потому, что у нас нет простого способа что-то сказать о ссылках (ребрах уровня экземпляра).
С 2020 года вы можете использовать RDF* следующим образом:
<<: Толкин: писал: LordOfTheRings >>: сказал: Википедия.
В 2020 году такой подход реализовали многие ведущие тройные магазины. Есть также инструменты для преобразования стандартной реификации в RDF*, чтобы уменьшить тройное раздувание. Этот подход эффективен с точки зрения количества троек и скорости загрузки данных, о чем сообщает хранилище Ontotext GraphDB Triple, а также несколько других.
Вы можете прочитать об истоках этого подхода здесь https://arxiv.org/pdf/1406.3399.pdf
Лучший способ сделать это - использовать подход одноэлементного свойства.
Например, вы создаете одноэлементное свойство для представления этого оператора в виде:
Tolkien wrote#1 "Lord of the rings" .
wrote#1 rdf:singletonPropertyOf wrote .
wrote#1 asserted_by Wikipedia .
Возможно, вы захотите узнать больше об этом в статье "Не нравится Реализация RDF? Делать заявления о заявлениях с использованием свойства singleton" или на ее слайдах по адресу http://www.slideshare.net/ntkimvinh7/www2014-singleton-propertyfinal..,