1

我目前正在尝试获取演员出演的电影(我想要他们的 URI)。当我探索linkedmdb 时,我看到“是”演员“的”,但我不能在我的 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。

4

1 回答 1

4

这么说

oxp

是一种常用的说法,即数据包含三元组

斯波

所以看到

actor32movie89演员

表示数据包含

电影 89 演员 演员 32

我会说财产演员的名字很糟糕。它更像featureshasActor,但 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”</h3>

Notation3 (N3):一种可读的 RDF 语法,非常类似于Turtle,即简洁的 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,因此您将无法在查询中执行此操作。

于 2013-09-13T16:13:54.290 回答