2012-09-23 118 views
2

我想使用“DESCRIBE”查询将dbpedia数据提取到RDF。Dbpedia上的“DESCRIBE”SPARQL查询

例如,如果键入:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX db: <http://dbpedia.org/ontology/> 
PREFIX prop: <http://dbpedia.org/property/> 
DESCRIBE ?movie ?author ?genre 
WHERE { 
?movie rdf:type db:Film ; 
prop:author ?author ; 
prop:genre ?genre . 
} 
LIMIT 50 
OFFSET 0 

一切工作正常。

但是,如果我添加演员和时间属性:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX db: <http://dbpedia.org/ontology/> 
PREFIX prop: <http://dbpedia.org/property/> 
DESCRIBE ?movie ?author ?genre ?actor ?duration 
WHERE { 
?movie rdf:type db:Film ; 
prop:author ?author ; 
prop:genre ?genre; 
prop:actor ?actor; 
prop:duration ?duration . 
} 
LIMIT 50 
OFFSET 0 

我得到空RDF。

这里是电影模式:http://schema.org/Movie

有人吗?

+1

你能提供RDF输入吗? – Raffaele

+0

我不确定你在问我什么。对不起,我有点新的rdf和sparql :) – expx

+0

你有本地文件吗?你是否在dbpedia网站上在线测试你的查询? – Raffaele

回答

2

我认为这是输入问题。假设你是通过the SPARQL web interface测试反对票DBpedia中,您可以通过

  • 标志durationgenre可选得到的东西(所以他们不需要指定)
  • 使用dbpprop:starring代替dbpprop:actor

所以以下查询

DESCRIBE ?movie ?author ?genre ?actor ?duration 
WHERE { 
    ?movie a dbpedia-owl:Film ; 
    dbpprop:author ?author ; 
    dbpprop:starring ?actor . 
    OPTIONAL { 
    ?movie dbpprop:duration ?duration ; 
    dbpprop:genre ?genre 
    } 
} 
LIMIT 5 
OFFSET 0 

will ge你是some graphs。另外请注意,我想你应该介绍http://schema.org/前缀使用电影架构(但他们似乎并没有被在DBpedia中的数据集深深地使用)

而且hereSELECT而不是DESCRIBE的结果(为什么你想要DESCRIBE结果格式吗?) - 我认为这很有道理。

我想我也觉得有趣。如果查询

DESCRIBE dbpparam:starring 

get an interesting error message

谓词 'http://www.w3.org/2002/07/owl#equivalentProperty' Errornous表达:架构:演员

我认为这就是为什么schema:actor(也可能是dbpprop:actor)不起作用。这在索引程序上似乎是一个错误。

+0

谢谢,现在好多了。我需要“描述”结果,因为我想将该rdf插入到sql数据库并在我的RESTful服务项目中使用它。我可以用“选择”结果格式吗? – expx

+1

我认为SELECT是要走的路。DESCRIBE以某种代理定义的方式返回数据,正如您所看到的,这在人类探索事物时非常有用,但它使程序难以对结果做一些有用的事情。来自SELECT的结果集对于SQL数据库 – Raffaele

+0

来说是完美的,可以肯定的是,我可以使用SELECT查询并使用JENA RDF API将结果RDF导入SQL数据库?不知何故,我想我必须使用DESCRIBE :) – expx