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