SPARQL-запрос не дает желаемых результатов - PullRequest
0 голосов
/ 26 октября 2019

Я использовал следующий код для перечисления членов группы панк-рок групп:

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema>

SELECT distinct ?bandname ?bandmembername where {
?band
   foaf:name ?bandname;
   dbo:genre dbr:Punk_Rock.
?bandmember
   dbo:bandMember ?bandmember;
   rdfs:label ?bandmembername.
}

Мне бы понадобились члены группы любой группы Punk_Rock.

1 Ответ

0 голосов
/ 28 октября 2019

Синтаксическая ошибка отсутствует.

В вашем запросе 2 ошибки.

  1. PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema> должно быть PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

  2. Предикат и объект dbo:bandMember ?bandmember должны описывать ?band (в котором есть члены), а не ?bandmember (который является членом)

С этими исправлениями в запросе вы должны увидеть результаты , на которые вы надеетесь -

PREFIX  dbo: <http://dbpedia.org/ontology/>
PREFIX  dbr: <http://dbpedia.org/resource/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT DISTINCT ?bandname ?bandmembername 
WHERE
{
  ?band
      foaf:name      ?bandname ;
      dbo:bandMember ?bandmember ;
      dbo:genre      dbr:Punk_Rock .
  ?bandmember 
      rdfs:label     ?bandmembername .
}
...