Основная причина того, что ваш запрос не работает должным образом, состоит в том, что данные: i) разбиты на отдельные графики и ii) не все графики были добавлены к графику по умолчанию.
Чтобы сделать его коротким,данные экземпляра содержатся внутри графика http://fr.dbpedia.org
, тогда как тройки схемы будут доступны только через график http://dbpedia.org
.Иногда, если граф не задан, объединение некоторых графов используется в качестве графа по умолчанию, который будет набором данных во время запроса.К сожалению, это не относится к конечной точке французской DBpedia, будет использоваться только граф данных экземпляра.
Вы можете проверить это с помощью
DESCRIBE <http://dbpedia.org/ontology/Person>
, которая пуста, если не используется ни один графявно или граф http://fr.dbpedia.org
, но непустой для графа http://dbpedia.org
.
Для определения графа по умолчанию используется ключевое слово FROM
.Поэтому для вашего запроса это должно быть
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct ?lcs
from <http://fr.dbpedia.org>
from <http://dbpedia.org>
where {
?lcs ^(rdf:type/rdfs:subClassOf*) <http://fr.dbpedia.org/resource/Honoré_Daumier> ,
<http://fr.dbpedia.org/resource/Auguste_Rodin>;
a owl:Class .
filter not exists {
?llcs ^(rdf:type/rdfs:subClassOf*) <http://fr.dbpedia.org/resource/Honoré_Daumier> ,
<http://fr.dbpedia.org/resource/Auguste_Rodin>;
a owl:Class ;
rdfs:subClassOf+ ?lcs .
}
}
Обратите внимание, хотя это, похоже, возвращает правильный результат, вы также должны рассмотреть комментарий от @TallTed относительно возможных различий между главами языков (например, английский против французской Википедии какsource), выпуски дампов (2016 или 2018 или даже DBpedia Live), а также версии Virtuoso, используемые в качестве бэкэнда.