我正在尝试使用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' .
}
答案 0 :(得分:0)
如果你想知道密封腔的先前和后面两个,你可以使用这个查询:
SELECT *
WHERE {
dbr:Harry_Potter_and_the_Chamber_of_Secrets
dbp:precededBy ?precededBy;
dbp:followedBy ?followedBy.
}
注意名称的格式,如同在维基百科URL中一样,带下划线而不是空格。
另请注意,如果一本书中没有一本书,则不会返回任何内容。您可以使用OPTIONAL
解决此问题。