Простой формат для неявного реификации - PullRequest
4 голосов
/ 07 марта 2011

Существует ли какой-либо формат сериализации RDF (например, Обозначение 3 ), который поддерживает неявное преобразование для простого представления операторов об операторах?

Например, скажем, у меня есть утверждение "Мэри купила дом", которое я бы обозначил в N3 как:

:Mary :bought-a :house .

Теперь скажите, что я хотел добавить мета-утверждения об этом утверждении, такие как «Я слышал это от Роба».

Интуитивно, я бы хотел представить это, написав что-то вроде:

:Mary :bought-a :house .
    :heard-by :me .
    :heard-from :Rob .

Однако я думаю, что то, как это будет «официально» представлено в N3, будет примерно таким:

[ a rei:Statement;
  rei:subject [rei:uri :Mary];
  rei:predicate [rei:uri :bought-a];
  rei:object [rei:value :house]
] [
    :heard-by :me;
    :heard-from :Rob;
] .

, который, очевидно, немного сложнее и труднее для чтения. Это становится еще сложнее, если мне нужно делать заявления о заявлениях об утверждениях. например «Я слышал это от Роба, пока Роб шел по улице».

Каков был бы правильный и простой способ представить это в формате сериализации RDF?

Ответы [ 2 ]

3 голосов
/ 07 марта 2011

Я бы постарался избежать неявной реификации, если это возможно, по ряду причин, но более конкретно, потому что:

  • доступ к данным сложнее,
  • размер набора данных резко увеличивается, так как каждая тройка становится 4 тройками,
  • Запросы SPARQL, которые работают с нереализованным набором данных, не будут работать с реализованным,
  • рассудители будут портить вещи или не будут работать.

После того, как я закодировал несколько приложений для семантической паутины, я очень сожалел о тех немногих случаях, когда я использовал неявное овеществление.

В вашем случае я бы попытался смоделировать его с явным повторением, используя Blank Node в качестве промежуточной точки соединения для предикатов heard-by и heard-from. Что-то вроде (в RDF / Turtle):

@prefix : <http://somedata.org/id/> .
:Mary :bought-a [ 
     a :House;
    :heard-by :me;
    :heard-from :Rob ] .

В простых RDF / ntriples это то же самое, что (преобразовано с рэппер ):

<http://somedata.org/id/Mary> <http://somedata.org/id/bought-a> _:genid1 .
_:genid1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://somedata.org/id/House> .
_:genid1 <http://somedata.org/id/heard-by> <http://somedata.org/id/me> .
_:genid1 <http://somedata.org/id/heard-from> <http://somedata.org/id/Rob> .

Как видите, Mary купил что-то из rdf:type House, и вы слышали это from Rob и Yourself.

Я считаю это решение более чистым и менее дорогостоящим, чем неявная реификация. Надеюсь, это поможет.

2 голосов
/ 10 марта 2011

Я бы использовал именованные графы и не боялся бы поместить в граф единственное утверждение.Вы можете поместить исходное утверждение в график, и тогда мета-утверждения будут касаться этого графика, а не утверждения внутри.Они могут быть помещены в один или несколько других графиков, и затем, если вам нужны какие-то сумасшедшие мета-операторы, вы можете работать с ними так же, как с исходным мета-оператором, ссылаясь на графы, содержащие мета-операторы.1001 *

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

...