Невозможно выполнить определенный запрос SPARQL для DBPedia: / - PullRequest
2 голосов
/ 17 мая 2011

На этом сайте , например, возьмите первый запрос SPARQL и сделайте что-то очень похожее:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE {
    ?name p:name <http://dbpedia.org/resource/Olivier_Theyskens> .
}

Попробуйте выполнить это: здесь

И я не получаю результатов. Однако измените запрос следующим образом:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE {
    ?name p:name ?otherthing.
}

И я получаю результаты, даже если они не те результаты, которые я хочу.

Почему не работает первый запрос - что я делаю не так? : /

Ответы [ 2 ]

6 голосов
/ 18 мая 2011

В данном случае, я думаю, это потому, что вы упорядочиваете свой запрос в обратном порядке.

Ресурс DBpedia (<http://dbpedia.org/resource/Olivier_Theyskens>) - это Сущность или Субъект (?s), свойство (p:name) - это атрибут или Предикат (?p) и значение этого свойства (* 1024). *) - это значение или объект (?o).

SPARQL ожидает, что все операторы будут { ?s ?p ?o }, но ваш, кажется, записывается как { ?o ?p ?s } ...

Подводя итог, если вы попробуете этот запрос -

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX p: <http://dbpedia.org/property/>
SELECT *
WHERE 
  {
    <http://dbpedia.org/resource/Olivier_Theyskens>  p:name  ?name  .
  }

- вы получите результаты, которые, я думаю, вы хотите .

4 голосов
/ 17 мая 2011

Проблема с вашим первым запросом состоит в том, что p:name ссылается на Literal, и вы пытаетесь сопоставить URI.

Если вы хотите, чтобы ваш первый запрос работал, вы должны использовать свойство http://dbpedia.org/ontology/artist, которое ссылается на URI, а не на литерал:

SELECT *
WHERE {
    ?s <http://dbpedia.org/ontology/artist> <http://dbpedia.org/resource/The_Velvet_Underground> .
}

Обратите внимание на другое пространство имен для свойства <http://dbpedia.org/ontology/artist> это пространство имен содержит ontology вместо property - ontology используется для свойств объекта.

...