对SPARQL的基本了解

时间:2016-03-10 18:03:28

标签: sparql dbpedia

我尝试了解SPARQL并使用dbpedia提供的SPARQL工具。我已经阅读了w3文档,现在我想创建自己的查询。我想找到J. J. R. Tolkien编写的dbpedia中所有书籍的名称。

因此我“设计”了这个查询:

    SELECT ?name WHERE { ?name ?author "J._R._R._Tolkien".
                         ?name ?mediaType "Print"}

结果是空的,但我至少会期待这本书出现: http://dbpedia.org/page/The_Lord_of_the_Rings

有人可以告诉我,我的概念错误是什么?

1 个答案:

答案 0 :(得分:2)

我的好方法是查看他的DBpedia页面,然后选择所需的属性。在您的情况下,两个好的候选人是var id1 = arr1.reduce(function(p,v,i){p[v.id] = i; return p;}, {}), id2 = arr2.reduce(function(p,v,i){p[v.id] = i; return p;}, {}); for(key in id1){ if (id2.hasOwnProperty(key)){ var element1 = arr1[id1[key]], element2 = arr2[id2[key]]; theFunction(element1.value1, element2 .value2); } } notableWork。这是对它们的查询,有效地使用后者。

author

我使用PREFIX : <http://dbpedia.org/resource/> PREFIX o: <http://dbpedia.org/ontology/> PREFIX p: <http://dbpedia.org/property/> SELECT DISTINCT ?is_author_of #?has_notable_work FROM <http://dbpedia.org/> WHERE { :J._R._R._Tolkien rdf:type o:Writer ; #o:notableWork ?has_notable_work ; ^p:author ?is_author_of . } 来减少可能的歧义(如果在dbpedia中使用单个资源的URI,则没有),rdf:type o:Writer可以获得正确的方向。我偏好^?is_author_of而非... ?has_notable_work?book是因为我不确定他的作品是什么类型的作品。