Как использовать альтернативные/новые онтологии в существующем наборе данных

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

Однако, по моему опыту, набор данных обычно привязан к конкретным онтологиям посредством предиката, то есть в subject-predicate-object, в котором предикат определяет какое-то свойство или отношение в соответствии с какой-то онтологией. Так, например, в запросе о фильмах, если ни одно из данных не ссылается на новую «онтологию фильмов» какого-то человека, то я не могу просто использовать ее термины в запросе к DBPedia или LinkedMDB, верно?

Затем я иногда вижу «связи» в наборе данных, которые по существу соединяют один конкретный ресурс с аналогичным ресурсом в другом наборе данных, который имеет свою собственную онтологию. то есть у linkedmdb есть owl:sameAs, но, похоже, это не то, что люди имеют в виду, применяя онтологии к данным.

Как это работает и как я могу использовать другую онтологию для некоторого предмета в запросе SPARQL к набору данных?


person Kristian    schedule 23.01.2014    source источник


Ответы (1)


Затем я иногда вижу «связи» в наборе данных, которые по существу соединяют один конкретный ресурс с аналогичным ресурсом в другом наборе данных, который имеет свою собственную онтологию. то есть у linkedmdb есть owl:sameAs, но, похоже, это не то, что люди имеют в виду, применяя онтологии к данным.

Это может быть не обязательно owl:sameAs, но я думаю, что это, вероятно, своего рода то, что вы ищете. Используя RDFS или OWL, вы можете делать различные утверждения о свойствах и классах таким образом, что после небольшого рассуждения у вас появится новое «представление» о ваших данных. Например, скажем, одна онтология определяет некоторые классы и свойства:

o1:Film a rdfs:Class .
o1:Actor a rdfs:Class .
o1:hasActor a rdf:Property .
            rdfs:domain o1:Film .
            rdfs:range o1:Actor .

Другая онтология определяет некоторые другие:

o2:Movie a rdfs:Class .
o2:Person a rdfs:Class .
o2:Character a rdfs:Class .
o2:hasCharacter a rdf:Property ;
                rdfs:domain o2:Movie ;
                rdfs:range o2:Character .
o2:playsRole a rdf:Property ;
             rdfs:domain o2:Actor ;
             rdfs:range o2:Character .

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

o2:Movie rdfs:subClassOf o1:Film .
o1:Film rdfs:subClassOf o2:Movie .

o1:Actor rdfs:subClassOf o2:Person .

Это всего лишь небольшая часть информации, но с помощью RDFS-рассуждения вы внезапно узнаете о множестве экземпляров. Если вы используете более выразительный язык онтологии, чем RDFS, скажем, OWL, то вы можете использовать некоторые более выразительные аксиомы, например,

Фильм Фильм
Актер Человек
hasActor hasRole o (обратная играет роль)

В частности, с этой последней аксиомой вы обнаружите, что любой, кто играет роль в фильме, является актером в фильме. OWL также позволит вам сделать гораздо больше, но это, если общая идея отображения онтологии или схемы. Чтобы использовать такой подход, вам нужно определить свои аксиомы отображения и применить алгоритм рассуждений к их объединению и исходному набору данных.

Вы также можете сделать больше с рассуждениями на основе правил. Например, вместо объявления третьей аксиомы OWL, приведенной выше, вы можете написать правило:

hasRole(?фильм,?роль) gamesRole(?актер,?роль) hasActor(?фильм,?актер)

Хотя применение правил — это просто еще один вид рассуждений, он имеет более тесную связь со SPARQL, поскольку вы можете использовать запросы SPARQL construct для получения данных в терминах онтологии в результате запросов к данным с использованием другого. Например, вы можете сделать:

construct {
  ?movie :hasActor ?actor
}
where {
  ?movie :hasRole ?role .
  ?actor :playsRole ?role .
}

Однако вы правы в том, что идея совместимости данных иногда немного преувеличена или, по крайней мере, звучит немного проще и привлекательнее, чем она есть на самом деле. В общем, чтобы использовать данные, вам нужно ознакомиться со словарем, в котором они выражены. Если вы хотите получить новые данные, используя другой словарь, основанный на исходных данных, вам нужно будет понять отношения между этими словарями довольно хорошо, и вам нужно будет применить какой-то перевод (часто это будет своего рода RDF или OWL).

person Joshua Taylor    schedule 23.01.2014
comment
Что касается последнего абзаца: да, знакомство с реальной онтологией, используемой для описания данных, полезно, если не необходимо. Разница, на мой взгляд, с любым другим структурированным представлением данных заключается в том, что такое знакомство поддается проверке: использование средства рассуждения предоставит все знания, заложенные в представлении. Однако это не относится к схеме базы данных или XML-представлению, где часть знаний заключается в кодировании данных, а не в самих данных. Тем не менее, онтологии, конечно, могут быть плохо определены :-) - person Ignazio; 25.01.2014
comment
@ Игнацио, если это не слишком сложно, не могли бы вы написать ответ и подробнее остановиться на этом вопросе? - person Kristian; 27.01.2014
comment
Есть литература по теме, попробую нарыть несколько релевантных ссылок. Хотя на самом деле это не ответ на вопрос, а скорее обоснованное мнение. Вот почему я добавил это как комментарий, а не ответ. - person Ignazio; 28.01.2014
comment
ncbi.nlm.nih.gov/pubmed/21343142 Это пример что я имею в виду. - person Ignazio; 28.01.2014