使用给定的RDF图对SPARQL查询进行错误处理

时间:2018-01-28 12:54:53

标签: sparql rdf

我有以下带有前缀的RDF图

PREFIX r: <http://dbpedia.org/resources/>
PREFIX o: <http://dbpedia.org/ontology/>

graph

和查询

PREFIX r: <http://dbpedia.org/resources/>
PREFIX o: <http://dbpedia.org/ontology/>

SELECT ?s ?author
WHERE {
   ?s o:type o:Book .
   ?s o:author ?author .
   ?author ?incategory r:Category:American_atheists.
}

我现在想知道输出会是什么样子。我尝试过使用https://dbpedia.org/sparql,但这会导致解析错误。 这是一个正确的查询吗? 该图表具有Book的前缀r,并且查询在三元组中具有o:Book

1 个答案:

答案 0 :(得分:3)

解析错误是由r:Category之后的冒号引起的。缩写IRI中的冒号只能用作前缀的一部分。此查询应该有效:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX r: <http://dbpedia.org/resource/>
PREFIX o: <http://dbpedia.org/ontology/>

SELECT ?s ?author
WHERE {
  ?s rdf:type o:Book .
  ?s o:author ?author .
  ?author ?incategory <http://dbpedia.org/resource/Category:American_atheists> .
}

或者,如果你想要一个更简洁的WHERE条款:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX r: <http://dbpedia.org/resource/>
PREFIX o: <http://dbpedia.org/ontology/>
PREFIX c: <http://dbpedia.org/resource/Category:>

SELECT ?s ?author
WHERE {
  ?s rdf:type o:Book .
  ?s o:author ?author .
  ?author ?incategory c:American_atheists .
}