获得电影演员的演员? Linkedmdb

时间:2013-09-13 13:54:16

标签: rdf sparql semantic-web linkedmdb

我目前正在尝试获取演员所扮演的电影(我想要他们的URI)。当我探索linkedmdb时,我看到“是”演员“of”,但我不能在我的SPARQL查询中使用它。它是一些特殊的命名空间还是什么?或者它是在OWL本体中?我现在使用的查询是:

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。

1 个答案:

答案 0 :(得分:3)

说那个

  

o x

是说数据包含三重

的常用方法
  

s p o

所以看到了

  

actor32 movie89

的演员

表示数据包含

  

movie89演员actor32

我会说属性 actor 命名不佳。它更像是 features 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 .
}

Results

除此之外,您可以使用;继续predicate object list来略微缩短此查询,这样您就不必重复主题?movie:< / p>

SELECT ?movie ?movieTitle WHERE{ 
  ?movie movie:actor <http://data.linkedmdb.org/resource/actor/30947> ;
         dc:title ?movieTitle .
}

附录:关于“is - of”

Notation3 (N3): A readable RDF syntax,它非常像Turtle, the Terse RDF Triple Language(实际上,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 Syntax for Triple Patterns不支持@is — @of,因此您无法在查询中执行此操作。