Простой пример реификации в RDF

Может ли кто-нибудь дать мне простой пример овеществления в RDF? Я хочу проверить, правильно ли я понял.

Например, я предлагаю следующий случай

Tolkien -> wrote -> Lord of the rings
           /|\
            |
        Wikipedia said that

Как бы вы написали это с и без овеществления (т. е. как простой оператор RDF без необходимости овеществления)?


person Stefano Borini    schedule 21.08.2009    source источник
comment
это похоже на карри: en.wikipedia.org/wiki/Currying   -  person lowtech    schedule 21.02.2021


Ответы (4)


«Толкин написал «Властелина колец»» можно выразить простым утверждением (подлежащее, сказуемое, дополнение) следующим образом:

:Tolkien :wrote :LordOfTheRings .

Кстати, здесь используется нотация Turtle для RDF. В Интернете есть инструменты для преобразования его в RDF/XML.

Используя оформление, вы можете иметь отдельный ресурс, представляющий утверждение, чтобы вы могли укажите дополнительные сведения о самом утверждении, например, «Википедия сказала, что»:

@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/Властелин_Кольца
http://dbpedia.org/property/author
http://dbpedia.org/resource/dbppedia/J._R._R._Tolkien

person Jukka Matilainen    schedule 22.08.2009
comment
Спасибо за ответ. Если я правильно понимаю, вы должны предоставить их оба, когда выполняете овеществление, или только овеществления достаточно, чтобы выразить овеществленное высказывание? (очевидно, так и должно быть, но технически, как лучше всего?) - person Stefano Borini; 22.08.2009
comment
Овеществленная версия утверждения не подразумевает исходное утверждение. Это объясняется в разделе Reification документа RDF Semantics, ссылка на который приведена выше. Это вполне логично: из Википедии сказано, что Толкин написал ВК, из этого не следует, что Толкин написал ВК. - person Jukka Matilainen; 22.08.2009
comment
На практике, если вы храните овеществленные версии всех ваших утверждений, вы в конечном итоге умножаете количество троек, которые вам нужно хранить. Если вам нужно только записать происхождение ваших утверждений, вы можете рассмотреть в качестве альтернативы именованные графы/четверные хранилища. - person Jukka Matilainen; 22.08.2009

Лучший способ сделать это - использовать подход с одноэлементным свойством.

Например, вы создаете одноэлементное свойство, чтобы представить этот оператор как:

Tolkien wrote#1 "Lord of the rings" .

wrote#1 rdf:singletonPropertyOf wrote .

wrote#1 asserted_by Wikipedia .

Вы можете подробнее прочитать об этом в документе «Не нравится RDF Reification? Делать заявления об утверждениях с использованием свойства singleton» или его слайдах по адресу http://www.slideshare.net/ntkimvinh7/www2014-singleton-propertyfinal...

person Vinh Nguyen    schedule 14.11.2014
comment
Я не думаю, что этот подход хорошо масштабируется (как и в случае со стандартизированным подходом к реификации RDF (w3.org/TR/rdf-mt/#Reif)) при просмотре со стороны запроса. Я бы предложил оставить предикатную часть такой, какая она есть сейчас в RDF, и расширить модель данных RDF, чтобы разрешить идентификатор оператора (см. также, например, lists.w3.org/Archives/Public/public-rdf-comments/2011Jan/). - person zazi; 22.11.2014
comment
С точки зрения запроса, это не имеет большого значения. Мы всегда можем оптимизировать обработку запросов (создание вспомогательных индексов, представлений и т.д.) - person Vinh Nguyen; 02.12.2014
comment
Я думаю, что более сложным является то, как вы представляете идентификатор оператора в формальной семантике RDF? - person Vinh Nguyen; 02.12.2014
comment
Я думаю, проблема со свойством singleton заключается в том, что вы связываете метаданные только с предикатом (если я правильно понял). Это не во всех случаях очень семантично. Рассмотрим нечто подобное: ‹personA› умер 830 . Мы точно знаем, что человек А умер, но допустим, Историк Б сказал, что это был 830 год. Тогда я хочу связать метаданные (Историк Б сказал...) с датой, которая здесь является объектом, а не с предикатом. Иногда даже наоборот: мы знаем, что кто-то умер 830, но не знаем кто. Историк С сказал, что это был человек А. Здесь метаданные должны идти вместе с темой. - person cis; 13.04.2015

К сожалению, до сих пор экземпляры отношения, то есть то, что документы W3C называют элементами расширения отношения, или то, что в математике вы бы назвали парами, которые являются элементами отношения, не считаются первоклассными. граждане.

Семантическая веб-экосистема утверждает лозунг AAA, что любой может сказать что угодно о чем угодно. Но это неверно, если первое «что угодно» здесь — одно ребро графа. Даже если сам RDF имеет средства для выражения знаний об одном ребре, документ W3C по семантике RDF делает все возможное, чтобы не поддерживать эту выразительность.

По сути, есть 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:label "some_string" .

Это грязный обходной путь, поскольку он нарушает четкое разделение мета-уровней.

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

person Besser-Wisser    schedule 31.10.2018

С 2020 года вы можете использовать RDF* следующим образом:

‹‹ : Толкин : написал : Властелин колец ›› : сказал : Википедия .

В 2020 году многие ведущие тройные магазины внедрили этот подход. Существуют также инструменты для преобразования стандартного овеществления в RDF*, чтобы уменьшить тройное раздувание. Этот подход эффективен с точки зрения количества троек и скорости загрузки данных, о чем сообщает хранилище Ontotext GraphDB Triple, а также несколько других.

Вы можете прочитать об истоках этого подхода здесь https://arxiv.org/pdf/1406.3399.pdf< /а>

person Gregory Saumier-Finch    schedule 27.08.2020