如何在 DBPEDIA 中使用 SPARQL 获取基于英文小说的电影

How to get the movies which are based on english novels using SPARQL in DBPEDIA

我正在使用 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

如果您像这样修改查询,您可以获得很多正确的结果...

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其他一些流行的分类,但那仍然不能保证不会有电影根据书,这不会被省略。

顺便问一下,你怎么称呼 "English novels" -- 那些最初是用英文写的还是英文作者写的?