gpt4 book ai didi

rdf - 无法使用 SPARQL 从 LinkedMDB 检索具有高 ID 的电影

转载 作者:行者123 更新时间:2023-12-05 00:26:33 25 4
gpt4 key购买 nike

我在 LinkedMDB SPARQL endpoint 运行以下查询它有效。有了它,我得到了我需要的关于电影导演的所有信息,id 为 72,也就是泰坦尼克号,所以我得到了关于詹姆斯卡梅隆的信息。

PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
?pelicula mdb:filmid ?id .
?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
FILTER (?id = 72).
}

对于具有更高 ID 的电影,例如,例如 Star Trek with ID 44396 ,如果我将 72 替换为 44396,则查询不会返回任何结果。 The entry不过,显然有一个目录、ID 和名称。为什么更改后的查询不起作用?

最佳答案

SPARQL 让你写 72作为文字 "72"^^xsd:integer 的简写.如您所见,您可以检索 ID 为 "72"^^xsd:integer 的影片。没有问题。但是,您要查找的另一部电影的 ID 为 "44396"^^xsd:int (请注意,数据类型是 xsd:int ,而不是 xsd:integer )。我不知道为什么数据类型不同,但足以帮助我们检索我们想要的内容:

PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
?pelicula mdb:filmid "44396"^^xsd:int .
?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
}

SPARQL results (one)
director          nombre_director  id_director
----------------------------------------------
db:director/9025 "J.J. Abrams" 9025

请注意,而不是 filter ing,我只是将实际所需的值放入查询模式中。我发现这有点简单,如果查询引擎没有优化,它的性能可能会更好(因为它没有构建一个大的结果集然后过滤掉一些东西)。事实上,如果对查询可以返回的结果数量有限制,这可能解释了为什么使用变量和过滤器的语义等效查询不返回任何结果。 (但这纯粹是推测。)无论如何,以下查询不起作用,但我认为它应该:
PREFIX mdb: <http://data.linkedmdb.org/resource/movie/>
SELECT ?director?nombre_director?id_director WHERE {
?pelicula mdb:filmid ?id .
?pelicula <http://data.linkedmdb.org/resource/movie/director> ?director .
?director <http://data.linkedmdb.org/resource/movie/director_name> ?nombre_director .
?director <http://data.linkedmdb.org/resource/movie/director_directorid> ?id_director .
filter ( ?id = "44396"^^xsd:int )
}

SPARQL results (none)

关于rdf - 无法使用 SPARQL 从 LinkedMDB 检索具有高 ID 的电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22021040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com