Запрос SPARQL приводит к тому, что Protege не распознает переходное свойство

У меня почти такое же требование, выраженное в этом вопросе: Получить все узлы в транзитивном отношении

Я использую Протеж 3.4.8. Это проект Owl-Lite. У меня есть транзитивное свойство "содержит", которое определяется как свойство объекта типа Node Node имеет потомков типа A, B и C

У меня есть люди, которые ссылаются друг на друга через свойство contains, подобное этому:

А содержит В содержит С

Когда я запускаю следующий запрос SPARQL:

SELECT ?A ?B
WHERE
{
    ?A :contains ?B         
}

Я получил :

A1 B1
B1 C1

Из-за транзитивного характера содержимого я ожидаю получить

A1 C1 

слишком. Что я здесь делаю неправильно? Вопрос, на который я ссылался, включает ответ Йены, будет ли это иметь значение для модели Jena?


person mahonya    schedule 23.08.2012    source источник


Ответы (2)


Ok,

Дальнейшие поиски привели меня на эту страницу: http://opentox.org/data/documents/development/RDF%20files/JavaOnly/query-reasoning-with-jena-and-sparql

Следующая цитата с этой страницы (вероятно) объясняет причины поведения, которое я вижу:

«Для наших целей запросы SPARQL могут выполняться либо непосредственно через панель запросов SPARQL в Protege, либо изнутри приложения JAVA с использованием специализированных методов библиотеки Jena. Оба подхода могут обрабатывать запросы, касающиеся явных отношений объектов и свойств, но библиотеки Jena имеют преимущество. использования аргумента. Таким образом, запросы, выполненные с использованием методов библиотеки Jena, могут возвращать результаты с учетом также транзитивных и логических отношений».

person mahonya    schedule 23.08.2012

SPARQL — это язык запросов RDF, поэтому не все механизмы SPARQL должны реализовывать последствия OWL (т. е. использовать семантику OWL для оценки запроса). Дополнительные сведения см. на странице http://www.w3.org/TR/sparql11-entailment/

Не уверен, какая реализация на самом деле использует Protege под капотом...

person wikier    schedule 04.09.2012