запрос sparql ничего не возвращает - PullRequest
1 голос
/ 20 марта 2012

Почему этот SPARQL не возвращает никакого значения

PREFIX ontology: <http://dbpedia.org/ontology/> 
SELECT ?Abstract 
WHERE
{
<http://dbpedia.org/resource/Cologne>  <http://dbpedia.org/ontology/wikiPageRedirects> ?page .
?page   <http://dbpedia.org/ontology/abstract>  ?Abstract.

FILTER (lang(?Abstract)='en')
}

Ответы [ 2 ]

5 голосов
/ 20 марта 2012

Две причины.Во-первых, нет перенаправлений Cologne, но есть перенаправления на него.Итак:

PREFIX ontology: <http://dbpedia.org/ontology/> 
SELECT * 
WHERE
{
    <http://dbpedia.org/resource/Cologne> 
        <http://dbpedia.org/ontology/wikiPageRedirects> ?page .
}

ничего не возвращает, тогда как:

PREFIX ontology: <http://dbpedia.org/ontology/> 
SELECT * 
WHERE
{
    ?page 
        <http://dbpedia.org/ontology/wikiPageRedirects>
            <http://dbpedia.org/resource/Cologne> .
}

не работает.

Во-вторых, ни одно из этих перенаправлений не имеет абстрактного.Cologne само по себе, так что вы можете просто использовать это:

PREFIX ontology: <http://dbpedia.org/ontology/> 
SELECT ?Abstract 
WHERE
{
    <http://dbpedia.org/resource/Cologne>
        <http://dbpedia.org/ontology/abstract>  ?Abstract.

    FILTER (lang(?Abstract)='en')
}
0 голосов
/ 20 марта 2012

Не возвращает никакого значения, потому что ничто не соответствует вашему запросу. Если вы разыменуете URI для Кельна, вы можете увидеть, что свойства wikiPageRedirects нет. dbpedia:Cologne ни на что не перенаправляет, но многие ресурсы перенаправляют на dbpedia:Cologne. Тем не менее, ресурсы, которые перенаправляют в Кельн, не имеют абстрактных. На самом деле это вполне нормально: в Википедии вы не можете редактировать страницу, которая перенаправляет на другую, поскольку вы обязательно перенаправлены на другую. Поэтому, когда dbpedia извлекает данные из Википедии, конечно же, нет ничего о перенаправленных страницах.

...