使用SPARQL,我正在尝试获取所有英文小说及其属性的列表。
我还想知道是否根据该小说拍摄了一部电影并获得电影名称及其导演,如果存在电影关系。
代码:
SELECT ?movie ?director ?book ?author ?publisher ?illustrator
WHERE {
?movie dcterms:subject <http://dbpedia.org/resource/Category:films> ;
dbpedia-owl:basedOn ?book .
?movie dbp:director ?director .
?book a dbpedia-owl:Book .
?book dbp:author ?author .
?book dbp:publisher ?publisher .
?book dbp:illustrator ?illustrator .
}
limit 200
答案 0 :(得分:1)
如果你像这样修改你的查询,你可以得到很多正确的结果......
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
SELECT ?book ?author ?movie ?director ?publisher ?illustrator
WHERE {
?book a dbpedia-owl:Book .
OPTIONAL {?book dbp:author ?author .}
OPTIONAL {?book dbp:publisher ?publisher .}
OPTIONAL {?book dbp:illustrator ?illustrator .}
OPTIONAL {?book ^dbpedia-owl:basedOn ?movie . ?movie a dbpedia-owl:Film }
OPTIONAL {?movie dbp:director ?director .}
}
LIMIT 200
...但请记住,有很多电影未被归类为dbpedia-owl:Film
。当然,你制作一个union
与其他几个流行的分类,但仍然不能保证不会有一本基于书的电影,不会被省略。
顺便说一句,你怎么称呼“英国小说” - 最初用英文或英文作者写的?