Учитывают ли существующие реализации SPARQL транзитивность предикативных отношений?

mihazimin Нет. Такие реализации SPARQL мне неизвестны.

Более того, когда ты пишешь подобный SPARQL-запрос

  PREFIX foaf:      SELECT ?name ?mbox  WHERE  {            ?x foaf:name ?name .            ?x foaf:mbox ?mbox .         } 

На http://xmlns.com/foaf/0.1/ SPARQL-процессор не идет (это просто префикс). По этому адреса вообще может ничего не быть, а SPARQL-запрос удачно выполнится. Главное, чтобы в документе (или графе репозитория), к которому осуществляется запрос были нужные триплеты:

    "имя" ;                     . 

Т.е. SPARQL ничего не знает о OWL, о транзитивности свойств. Он воспринимает только RDF-данные как набор триплетов. И если подумать, то это скорее всего верное решение. Что же делать в таком случае, если мы хотим использовать функциональность OWL? Зададимся вопросом что такого нам предоставляет OWL? Вот ответ: 1. Определять является ли RDF валидной (соответствует ли она OWL). Не противоречат ли две подключенные OWL-ки. Но эти задачи не столь интересные. В принципе о них можно тоже поговорить, но сейчас хочется сосредоточиться на другом. 2. Правила, по которым должны к существующим RDF-данным добавляться новые: т.е. например, есть owl-данные: означает, что если в документе, использующим эту онтологию найдется триплет

  b прилегаетКРегиону c . 

то в этот документ должен будет добавлен триплет

  c прилегаетКРегиону b . 

Как это сделать? Можно, конечно, изобретать вилосипед, а можно обойтись и инструментарием SPARQL (используя CONSTRUCT):

  PREFIX someowl:   CONSTRUCT  {      ?x ?SymmetricProperty ?y .  }  FROM NAMED   WHERE  {      ?y ?SymmetricProperty ?x .        GRAPH       {          ?SymmetricProperty a owl:SymmetricProperty .      }  } 

Сам не проверял. (Возможно не сработает с первого раза :-) Сейчас на работе, а здесь проверить не на чем). Но сделать примерно так вполне реально. Для TransitiveProperty примерно так:

  PREFIX someowl:   CONSTRUCT  {      ?x ?TransitiveProperty ?z .  }  FROM NAMED   WHERE  {      ?x ?TransitiveProperty ?y .      ?y ?TransitiveProperty ?z .        GRAPH       {          ?TransitiveProperty a owl:TransitiveProperty .      }  } 

Подобными способами, вероятно, можно получить триплеты и из других типов owl-свойств. Эти триплеты можно непосредственно добавить в документ (в репозиторий или на диск) или подгрузить к RDF-модели на время исполнения приложения (в оперативную память). P.S. Все, что здесь написано о SPARQL-процессорах относится только к тем, которые я знаю. Возможно какие-то и поддерживают OWL на другом уровне. Интересно будет узнать, заработали ли CONSTRUCT запросы. Какие должны быть запросы для других типов свойств. Возможно, у тебя есть какие-нибудь еще другие идеи на эту тему. (Тема, кстати, действительно очень интересная).

alexander ИМХО, запросы, которые приведены в твоем посте отражают как минимум твое знание OWL синтаксиса, принципов построения онтологии, семантики языка запросов SPARQL, и т.д. Любой непросвещенный человек не может воспользоваться всем этим инструментарием.

Давай взглянем на запросы, которые обрабатываются изветными в настоящий момент поисковиками: www.yandex.ru, wwww.google.com. Индексированный поиск позволяет найти лишь страницы с одновременным упоминанием ключевых слов на них. Что такое ключевые слова? Обычно это существительные — аналогия с индивидами классов в онтологии. Что обычно ищет человек? Какие-либо события, связанные с ключевыми словами (индивидами классов в онтологии). Другими словами, человека интересует какие-либо конкретные отношения между классами. Понятно, что шаблонный поиск выдаст кучу мусора, особенно, если данны триплет не встречался ни на одной странице. НО с помощью связей в онтологии можно найти триплет. который встречался в онтологии. З.Ы. получилось слишком путано. Завтра попробую еще раз, если непонятно:)

mihazimin Распиши, пожалуйста, поподробнее :-)

А лучше, приведи простой пример (это всегда всем помагает).

dulanov mihazimin пишет:

[quote]Т.е. SPARQL ничего не знает о OWL, о транзитивности свойств. Он воспринимает только RDF-данные как набор триплетов. [/quote] Я точно не знаю, но похоже вы не правы. Запросы к Sesame, например, производят вывод над OWL (там правда SeRQL кажется используется вместо SPARQL) . И проблема не в SPARQLе, а в настройке системы. Можно через расширения с легкостью добавлять поддержку вывода.

Uvlads Озвученная проблема не является проблемой того или иного новоявленного языка ПРОГРАММИРОВАНИЯ Intel, RISC или т.п. поделок.

Рекомендую почитать литературу 1970х. Там проблемы отождествления поискового шаблона с семантической сетью, представляющей предметную область, обсуждались довольно обстоятельно. Результат неутешителен не потому, что не было XML (в то время, кстати, использовались более развитые языки обработки списковых структур), а по причине неадекватности аппаратных средств в принципе, когда память отдельно, процессор отдельно, и соответствующей им «технологии обработки» информации, которая совершенно не приспособлена для ассоциирования элементов системы. Это тупиковая метода. Давно пора перестать наступать на эти грабли, сделать более глубокий откат и искать принципиально иные технологии. И вообще, складывается впечатление, что вторая, после воровства денег у публики, цель мелкомягкого и толпы хардверов состоит как раз том, чтобы удерживать ИТ-шников в этом тупике.