0

我正在尝试在古腾堡项目 ( http://www4.wiwiss.fu-berlin.de/gutendata/ ) 中获取关于作者威廉莎士比亚的所有书籍。我可以使用这个查询来返回莎士比亚是作者的所有项目:

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:subjects http://wifo5-04.informatik.uni-mannheim.de/gutendata/resource/subject/Shakespeare_William_1564-1616获取有关莎士比亚的批评书籍清单。

我将衷心感谢您的帮助 !

4

1 回答 1

1

我同意RobV 的评论,令人惊讶的是,在编写了第一个查询之后,编写第二个查询会遇到很多困难。无论如何,这种变化是相对微不足道的。我检查了两者dc:subjectdcterms:subject,似乎古腾堡数据是用 存储的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" |
--------------------------------------------------------------------------------------------
于 2013-08-10T22:51:17.247 回答