Простой формат для неявной реификации

Существует ли какой-либо формат сериализации RDF (например, Notation 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?


person Cerin    schedule 07.03.2011    source источник


Ответы (2)


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

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

person Andrew McKnight    schedule 09.03.2011
comment
Это то, что я использовал, так как это наиболее близко к моему примеру, и и N3, и TriG поддерживают именованные графы. - person Cerin; 11.03.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/ntriple это то же самое, что и (преобразованное с помощью rapper):

<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.

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

person Manuel Salvadores    schedule 07.03.2011