dbpedia SPARQL书籍搜索查询

时间:2016-07-02 12:36:44

标签: dbpedia

我正在尝试使用sparql搜索检索dbpedia的preceded和followBy属性的书籍标题。 例如。 http://dbpedia.org/page/Harry_Potter_and_the_Goblet_of_Fire - 将返回前后书名的查询。因此,如果我把书中的标题“密室”放进去,我会在返回之前和之后得到这些书。

我曾尝试观看一些关于sparql的视频,并查看了https://km.aifb.kit.edu/projects/spartiqulator/examples.htm中的示例,但似乎无法生成有效的查询。

我尝试过以下操作,但会产生语法错误。我不确定如何链接我尝试以正确方式过滤的属性,例如rdf:和dbp等。

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX res:  <http://dbpedia.org/resource/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>


SELECT DISTINCT ?uri  
WHERE {
    ?uri rdf:type dbo:Book .
    ?uri dbp:precededBy res:'Harry Potter and the Chamber of Secrets' .

}

以下运行但没有结果。

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX res:  <http://dbpedia.org/resource/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>


SELECT DISTINCT ?uri  
WHERE {
    ?uri rdf:type dbo:Book .
    ?uri dbp:followedBy 'Harry Potter and the Order of the Phoenix' .

}

1 个答案:

答案 0 :(得分:0)

如果你想知道密封腔的先前和后面两个,你可以使用这个查询:

SELECT *
WHERE {
  dbr:Harry_Potter_and_the_Chamber_of_Secrets
    dbp:precededBy ?precededBy;
    dbp:followedBy ?followedBy.
}

注意名称的格式,如同在维基百科URL中一样,带下划线而不是空格。

另请注意,如果一本书中没有一本书,则不会返回任何内容。您可以使用OPTIONAL解决此问题。