-1

使用 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
4

1 回答 1

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用其他一些流行的分类来制作一个,但这仍然不能保证不会有基于一本书的电影,它不会被省略。

顺便问一下,你所谓的“英国小说”——那些最初是用英语写的还是那些由英国作家写的?

于 2017-03-10T17:22:16.453 回答