2012-04-08 66 views
1

目前我正在学习如何使用资源SPARQL查询上DBpedia中并与Virtuoso SPARQL Query Editor试验RDF数据,但我似乎误解了什么。结果查询是资源URI

例如,我试图找出低俗小说的导演名字,使用这种资源: http://dbpedia.org/resource/Pulp_Fiction,所以我的(简单)查询:

SELECT ?dirName 
FROM <http://dbpedia.org/resource/Pulp_Fiction> 
WHERE 
{ 
    ?s <http://dbpedia.org/property/director> ?dirName. 
} 

它的工作原理,但结果是一个URI资源:http://dbpedia.org/resource/Quentin_Tarantino。 现在我想找回的导演出生时的名字,所以我尝试

SELECT ?dirRes ?dirName 
FROM <http://dbpedia.org/resource/Pulp_Fiction> 
WHERE 
{ 
    ?s  <http://dbpedia.org/property/director> ?dirRes. 
    ?dirRes <http://dbpedia.org/ontology/birthDate> ?dirName. 
} 

没有成功,结果是空数组...

有人可以帮助我?

谢谢!

回答

5

FROM部分选择要查询的数据库,而不是实体。

请记住,RDF由具有主语 - 谓词 - 宾语结构的三元组组成。您正在寻找:

Pulp_Fiction director ?director 

让我们查询的是:

SELECT * { 
    <http://dbpedia.org/resource/Pulp_Fiction> <http://dbpedia.org/property/director> ?director. 
} 

我们得到?director资源的属性,添加更多的三倍到查询:

SELECT * { 
    <http://dbpedia.org/resource/Pulp_Fiction> <http://dbpedia.org/property/director> ?director. 
    ?director <http://dbpedia.org/ontology/birthDate> ?birthdate. 
} 

你可以使用预定义前缀代替完整的URI来缩短查询时间。您可以通过点击右上角的“名称空间前缀”来获取列表。如果您在使用dbppropdbpedia-owl之间进行选择,请始终使用后者,因为该名称空间中的类和属性的管理更好。结果:

SELECT * { 
    dbpedia:Pulp_Fiction dbpedia-owl:director ?director. 
    ?director dbpedia-owl:birthDate ?birthdate. 
} 
+0

非常感谢! – 2012-04-08 13:49:29