我试图在gutemberg项目(http://www4.wiwiss.fu-berlin.de/gutendata/)中获得关于作者William Shakespeare的所有书籍。 我可以使用此查询来返回莎士比亚作为作者的所有项目:
PREFIX dc:<http://purl.org/dc/elements/1.1/>
PREFIX foaf:<http://xmlns.com/foaf/0.1/>
SELECT ?bookTitle
WHERE {
?author foaf:name "Shakespeare, William, 1564-1616".
?book dc:creator ?author;
dc:title ?bookTitle
}
但我更愿意使用dcterms:subject获得关于莎士比亚的批评书的清单 http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/subject/Shakespeare_William_1564-1616
我真的很感谢你的帮助!
答案 0 :(得分:1)
我同意RobV's comment令人惊讶的是,在编写第一个查询后,编写第二个查询会有很大困难。无论如何,这种变化相对微不足道。我使用dc:subject
和dcterms:subject
进行了检查,看来Gutenberg数据与dc:subject
一起存储,因此我在此查询中使用了该数据,而不是dcterms:subject
。这是查询;您只需要将dc:subject <.../Shakespeare...>
添加到模式中,然后删除作者约束。一些前缀使查询更容易编写,结果也更容易阅读。
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX gp: <http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/people/>
PREFIX gs: <http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/subject/>
PREFIX gr: <http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/>
SELECT ?book ?author ?bookTitle WHERE {
?book dc:creator ?author ;
dc:title ?bookTitle ;
dc:subject gs:Shakespeare_William_1564-1616 .
}
使用这样的查询,您应该得到如下结果:
--------------------------------------------------------------------------------------------
| book | author | bookTitle |
============================================================================================
| gr:etext14827 | gp:Guizot_François_Pierre_Guillaume_1787-1874 | "Étude sur Shakspeare" |
| gr:etext5429 | gp:Johnson_Samuel_1709-1784 | "Preface to Shakespeare" |
--------------------------------------------------------------------------------------------