我目前正在尝试获得演员扮演的电影(我想要他们的URI)。当我浏览linkedmdb时,我看到了"is“,但我不能在SPARQL查询中使用它。是特殊的命名空间还是别的什么?还是在猫头鹰本体中?我现在使用的查询是:
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?actorName ?filmName WHERE{
<http://data.linkedmdb.org/resource/actor/30947> movie:actor_name ?actorName .
<http://data.linkedmdb.org/resource/actor/30947> movie:performance ?film .
?film movie:performance_film ?filmName .
}这个代码只返回标题,我想要电影的整个URI。
发布于 2013-09-13 16:13:54
说过
O是p of x
是一种常见的说法,即数据包含三重
斯波
所以看到
actor32 是演员of movie89
意味着数据包含
movie89演员actor32
我想说的是那个房地产演员的名字很差。它更像特性或hasActor,但是RDF是由数据库的映射生成的,所以我认为有些名称是自动生成的,它们不可能都很棒。无论如何,这意味着像下面这样的查询将找到<http://data.linkedmdb.org/resource/actor/30947>所操作的所有电影及其标题。
SELECT ?movie ?movieTitle WHERE{
?movie movie:actor <http://data.linkedmdb.org/resource/actor/30947> .
?movie dc:title ?movieTitle .
}结果
顺便说一句,您可以通过使用;继续一个谓词对象列表来稍微简化这个查询,所以您不必重复主题?movie
SELECT ?movie ?movieTitle WHERE{
?movie movie:actor <http://data.linkedmdb.org/resource/actor/30947> ;
dc:title ?movieTitle .
}附录:关于“is-of”
Notation3 (N3):可读的RDF语法非常类似于乌龟,简洁的RDF三重语言 (实际上,Turtle是N3的一个子集),但它包含了一些更多的语法结构,实际上允许以“is - of”的方式编写三元组。谓词的语法生成是:
predicate
expression
"<="
"="
"=>"
"@a"
"@has" expression
"@is" expression "@of"这意味着在N3中,你可以,例如,。枚举类的某些实例。
ex:Planet @is rdf:type @of
:Mercury, :Venus, :Earth, :Mars, :Jupiter, :Saturn, :Uranus, :Neptune .而不是去做
:Mercury rdf:type ex:Planet .
:Venus rdf:type ex:Planet .
:Earth rdf:type ex:Planet .
:Mars rdf:type ex:Planet .
:Jupiter rdf:type ex:Planet .
:Saturn rdf:type ex:Planet .
:Uranus rdf:type ex:Planet .
:Neptune rdf:type ex:Planet .不幸的是,许多声称支持N3的工具实际上只支持Turtle,并且不接受第一种形式。但是,您正在处理的是一些真正支持N3的东西,您可以编写
<http://data.linkedmdb.org/resource/actor/30947> @is movie:actor @of ?movie .
?movie dc:title ?movieTitle .遗憾的是,SPARQL 三重模式语法不支持@is — @of,所以您将无法在查询中做到这一点。
https://stackoverflow.com/questions/18788134
复制相似问题