我希望在标题中没有"The Lord of the rings"字符串的情况下获得所有电影.我在链接电影数据库SPARQL端点尝试了这个,但它不起作用.怎么了?
PREFIX m: <http://data.linkedmdb.org/resource/movie/>
SELECT DISTINCT * WHERE {
?film dc:title ?titulo_pelicula.
FILTER NOT EXISTS {
FILTER (regex(?titulo_pelicula, "The Lord of the Rings","i")) .
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用SPARQL识别事物之间的概念重叠.
以电影为例(LinkedMDB数据),如果我有一部电影,"The Matrix",我的目标是列出与该电影相似的电影,我可能会先做以下几点:
然后使用我在矩阵中识别的东西,我会查询具有这些属性的东西(伪查询)
SELECT movie, genre, director, location, actors
WHERE {
genre is action or sci-fi .
director are the Wachowski brothers .
location is set in a big city .
OPTIONAL( actors were in the matrix . )
}
Run Code Online (Sandbox Code Playgroud)
SPARQL中有什么东西可以让我检查不同节点之间属性的重叠吗?或者必须像我提议的那样手动完成吗?
您可以在Linked MDB SPARQL Explorer中运行下面的查询。(最后一个变量)的值?imdbID包含来自三个可能域(freebase.com、rottentomatoes.com 或 imdb.com)之一的 IRI。我想知道如何应用filter这样的方法,仅保留来自 imdb.com 域的行。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
SELECT ?title ?date ?director ?imdbID
WHERE {
?film foaf:page ?imdbID.
?film dc:title ?title.
?film dc:date ?date .
?film movie:director ?directorURI.
?directorURI rdfs:label ?director .
}
Run Code Online (Sandbox Code Playgroud) 我在LinkedMDB SPARQL端点运行以下查询,它可以工作.有了它,我得到了关于电影导演的所有信息,其中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).
}
Run Code Online (Sandbox Code Playgroud)
对于具有较高ID的电影,例如具有ID 44396的示例星际迷航,如果我用44396替换72,则查询不返回任何结果.但是,该条目显然具有目录,ID和名称.为什么修改后的查询不起作用?
我对 SPARQL 完全陌生。
我想计算这个本体中的参与者数量: http: //data.linkedmdb.org/directory/actor
我尝试了以下方法:
SELECT ?s (COUNT(*) AS ?count)
WHERE
{
?a <http://data.linkedmdb.org/directory/actor> ?s}
GROUP BY ?s
Run Code Online (Sandbox Code Playgroud)
但我相信这不是正确的语法,因为它给了我 0 个结果..我知道该数据源中有几个结果!难道是链接不正确吗?
我运行了以下查询,并从linkedmdb获取了电影及其相应的DBpedia URI的数据.
SELECT ?film ?label ?dbpediaLink
WHERE {
?film rdf:type movie:film .
?film rdfs:label ?label .
?film owl:sameAs ?dbpediaLink
FILTER(regex(str(?dbpediaLink), "dbpedia", "i"))
}
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
我想使用?dbpediaLinkURI 从DBpedia获取这些电影的类别.另外,我需要dcterms:subject从DBpedia获取电影的属性值.我无法理解如何连接它们?我可以通过SPARQL来完成,还是需要为此编写代码?
我目前正在使用不同的SPARQL端点,并希望按标题查询IMDB端点的电影.我已经为DBPedia提出了以下查询.
SELECT DISTINCT film_title
WHERE {
?film_title rdf:type <http://dbpedia.org/ontology/Film> .
?film_title dbpprop:name ?label . FILTER langMatches(lang(?label), "en")
?film_title rdfs:comment ?comment . FILTER(LANGMATCHES(LANG(?comment), "en")) .
FILTER (REGEX(STR(?film_title), "The Big Lebowski", "i")) .
} LIMIT 10
Run Code Online (Sandbox Code Playgroud)
有人会对如何构建IMDB查询有任何建议吗?