RDF Graph Entailment
Я только что прочитал о концепции реализации для RDF (Resource Description Framework). Может кто-нибудь сказать мне пример реализации для двух графиков RDF и объяснить их немного.
Спасибо
2 ответа
Предположим, у вас есть следующее:
ex:book1 rdf:type ex:Publication .
ex:book2 rdf:type ex:Article .
Таким образом, запрос Sparql, такой как SELECT? S {? S rdf:type ex:Publication }, будет возвращать только ex:book1
Если вы добавите факт (или график в вашем наборе данных с фактом), который гласит:
ex:Article rdfs:subClassOf ex:Publication
Если ваш движок sparql обрабатывает вложения, он должен сделать вывод, что ex:Article также является ex: Publication
поэтому SELECT?s {?s rdf:type ex:Publication } вернет как ex:book1, так и ex: book2
PS: для получения дополнительной информации, пример взят с http://www.w3.org/TR/2009/WD-sparql11-entailment-20091022/
Есть еще один ответ о подключении RDFS, который важен и является важной частью повседневной работы с RDF, но реализация RDFS отличается от привязки RDF. Вложение RDF представляет собой связь между целыми RDF-графами и дает способ сказать: "Если RDF-граф x выполняется, то и RDF-граф y". В разделе простого описания документов RDF Semantics описываются основные условия:
Следуя общепринятой терминологии, я удовлетворяю E, если I(E)=true, и множество S RDF-графов (просто) влечет за собой граф E, если каждая интерпретация, которая удовлетворяет каждому члену S, также удовлетворяет E. В последующих разделах эти понятия будут адаптированы для других классов интерпретаций, но во всем этом разделе "влеченность" должна интерпретироваться как означающая простое вложение.
Это предполагает понимание интерпретации графа E, обозначенного I (E). Интерпретация отображает каждое свойство на набор пар. Например, интерпретация должна отобразить свойство rdfs:subClassOf
на множество пар {[x, y]: x является подклассом y}. Чтобы интерпретация удовлетворяла графу, тогда набор пар, которым интерпретация сопоставляет свойство, должен содержать хотя бы те пары, которые фактически наблюдаются в графе. Например, если график содержит
a likes b.
b likes c.
тогда интерпретация удовлетворяет графу тогда и только тогда, когда I (лайки) содержит пары [a,b] и [b,c]. Граф G1 влечет за собой граф G2 тогда и только тогда, когда каждая интерпретация, которая удовлетворяет G1, также удовлетворяет G2. Если в графе нет пустых узлов, это довольно просто.
В связанном разделе документа RDF Semantics перечислены некоторые простые результаты этого:
- Каждый граф влечет за собой пустой граф.
- Каждый граф влечет за собой каждый из его подграфов.
Все становится сложнее, когда в графе RDF есть пустые узлы, потому что пустые узлы интерпретируются как экзистенциальные переменные. Например, рассмотрим график только с одной тройкой (где _:z
это пустой узел):
a likes _:z
поскольку _:z
является экзистенциальной переменной, это означает, что интерпретация удовлетворяет графу тогда и только тогда, когда существует такой индивидуум x, что интерпретация лайков содержит пару [a,x]. Если в графе есть пустые узлы, то замена этих пустых узлов фактическими терминами создает экземпляр этого графа. Например,
a likes b
является экземпляром графа
a likes _:z
В связанном документе также упоминается отношение
- Каждый экземпляр графа влечет за собой граф
Это легко увидеть: если интерпретация удовлетворяет a likes b
, тогда его интерпретация лайков должна содержать [a,b], поэтому, безусловно, существует такой x (а именно b), что он содержит [a,x], поэтому он также удовлетворяет a likes _:z
,
Это всего лишь несколько простых примеров реализации RDF-графа. Я не знаю, что этот тип привязанности фактически используется в повседневной работе с RDF. Гораздо более распространенными являются RDFS-привязанность (описанная в другом ответе), OWL-привязанность и обоснование на основе правил.