以下SPARQL查询只获取2500条记录与演员和电影,我不知道为什么它仅限于2500:
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
SELECT ?id ?filmTitle ?actorName WHERE {
SERVICE <http://data.linkedmdb.org/sparql> {
?film a movie:film ;
movie:filmid ?id ;
dcterms:title ?filmTitle ;
movie:actor [ a movie:actor ;
movie:actor_name ?actorName ].
}
}
查询是从一个问题的答案: 用SPARQL查询链接的电影数据库(LMDB)
什么是a
关键字是什么意思? 什么方括号[]
代表什么?
我理解的是, a
关键字为替代rdf:type
和予改写了SPARQL查询的一部分,而不演员。 但我仍然想不通的方括号[]的意思。
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?film ?id ?filmTitle WHERE {
#VALUES ?filmTitle { "The Matrix" }
SERVICE <http://data.linkedmdb.org/sparql> {
?film rdf:type movie:film.
?film movie:filmid ?id.
?film rdfs:label ?filmTitle.
}
}
感谢您的答复,但该代码遗漏了一些演员的电影。 例如电影“遥远的桥”有18个演员,但此查询的结果只有2
PREFIX dcterms: <purl.org/dc/terms/>;
PREFIX movie: <data.linkedmdb.org/resource/movie/>;
SELECT ?id ?filmTitle ?actorName
WHERE {
SERVICE <data.linkedmdb.org/sparql>;
{
?film a movie:film ;
movie:filmid ?id ;
dcterms:title ?filmTitle ;
movie:actor [ a movie:actor ;
movie:actor_name ?actorName ].
}
} ORDER BY ASC(?filmTitle)
我编辑的代码,仍然给的2名者相同的结果,而不是18
filmlistrq
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?film ?id ?filmTitle ?actorName WHERE {
#VALUES ?filmTitle { "The Matrix" }
SERVICE <http://data.linkedmdb.org/sparql> {
?film rdf:type movie:film.
?film movie:filmid ?id.
?film rdfs:label ?filmTitle.
?film movie:actor ?actorID.
?actorID movie:actor_name ?actorName.
}
}
ORDER BY ASC(?filmTitle)