2015-12-31 2 views
3

Почему this SPARQL queryno data?Запрос SPARQL возвращает данные

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX dbpedia: <http://dbpedia.org/resource/> 

SELECT * 
WHERE { 
    <http://dbpedia.org/resource/Louis,_Prince_of_Condé_(1530–1569)> dbpedia-owl:abstract ?abstract    
} 
LIMIT 1 

Если посмотреть на the DBpedia page, это означает, что человек имеет аннотацию. Это связано с скобками в URL-адресе? Если да, то как я могу обойти это?

ответ

4

Этот URI не приводит к такому же результату, что и страница DBpedia - по какой-либо причине. Вы можете увидеть это с

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> 
PREFIX dbpedia: <http://dbpedia.org/resource/> 
SELECT * 
WHERE { 
    <http://dbpedia.org/resource/Louis,_Prince_of_Condé_(1530–1569)> ?p ?o   
} 
LIMIT 100 

Но это сову: sameAs отношение к http://dbpedia.org/resource/Louis,_Prince_of_Cond%C3%A9_(1530%E2%80%931569)

Это означает, что если вы используете этот URI в запросе, он должен работать, как ожидалось. Но вы действительно должны применять ФИЛЬТР на языке, например. 'en' для англоязычных тезисов.

+1

Вам не нужно использовать другой IRI. Вы можете использовать путь свойства, чтобы пройти эти совы: одинаковые ссылки на другие эквивалентные ресурсы, которые затем могут содержать реферат. Я отправил пример как [ответ] (http://stackoverflow.com/a/34561345/1281433). –

2

У него нет dbpedia-owl:abstract предикат. Если вы перечисляете свои предикаты вы найдете следующие свойства:

http://www.w3.org/2002/07/owl#sameAs 
http://xmlns.com/foaf/0.1/name 
http://purl.org/dc/elements/1.1/description 
http://dbpedia.org/ontology/alias 
http://dbpedia.org/ontology/birthYear 
http://dbpedia.org/ontology/deathYear 
http://dbpedia.org/ontology/viafId 
http://dbpedia.org/ontology/deathPlace 
http://dbpedia.org/ontology/deathDate 
http://dbpedia.org/ontology/birthPlace 
http://dbpedia.org/ontology/birthDate 
3

Как отмечает AKSW, ресурс на самом деле не имеет много свойств, но связано с «канонической» версии на сову: ссылка sameAs. Вы можете продолжать использовать IRI, который вы используете сейчас, следовать за совой: одинаково в любом направлении к любому из своих равных ресурсов (давайте назовем их?), А затем попросить резюме? (И тогда неплохо было бы фильтровать по языку, если это применимо.) Вы можете сделать это с помощью такого запроса (обратите внимание, что текущая конечная точка DBpedia использует dbo:, теперь не старше dbpedia-owl:):

select ?abstract where { 
    <http://dbpedia.org/resource/Louis,_Prince_of_Condé_(1530–1569)> (owl:sameAs|^owl:sameAs)* ?s . 
    ?s dbo:abstract ?abstract . 

    filter langMatches(lang(?abstract),'en') 
} 
+0

re: «Обратите внимание, что текущая конечная точка DBpedia использует' dbo: ', теперь, а не более старую dbpedia-owl:' "- обратите внимание, что, хотя это префикс' 'по умолчанию на конечной точке, ручная настройка' prefix', as видимый в вопросе ОП, остается вариантом. – TallTed

+0

@TallTed Действительно, пользователь может определить любые префиксы, которые им нравятся. Тем не менее, я обычно пытаюсь опубликовать код, который можно скопировать и вставить прямо в [веб-интерфейс конечной точки] (http://dbpedia.org/sparql) (конечно, это означает, что все мои * старые * сообщения, которые используют ** dbpedia-owl: ** сейчас * не работает *) –

+0

Конечно, если бы вы включили декларации 'PREFIX dbpedia-owl:' в свои старые сообщения (или вернитесь и добавьте их сейчас), они будут продолжать (или будут снова) работать. – TallTed