2015-04-01 27 views
0

我尝试在DBpedia的SPARQL中编写查询以返回某个国家/地区高中的所有信息。我在这里运行snorql上的查询link,但它返回“无结果”。我在查询中找不到任何错误。谁能帮忙?DBDB中的SPARQL不返回结果

SELECT ?school 
WHERE { 
?school a owl:school. 
?school owl:location ?city. 
?city owl:isPartOf ?state. 
?state owl:country <http://dbpedia.org/resource/United_States>. 
} 

编辑:

  1. http://dbpedia.org/ontology/school
  2. http://dbpedia.org/ontology/location
  3. http://dbpedia.org/ontology/country
+0

什么是'owl:school'?什么是'猫头鹰:位置'?什么是'owl:isPartOf'?什么是'owl:country'?这些标识符不是[OWL 2](http://www.w3.org/TR/owl2-overview/)的一部分。 – 2015-04-01 11:03:19

+0

如果您访问Snorql的链接,您会看到已经从virtuoso中设置了前缀。例如:'PREFIX猫头鹰: ' – Tasos 2015-04-01 11:06:20

回答

3

你似乎弄错了,你应该使用本体。您正在使用从映射到前缀owl,即命名空间各种标识符:

  • owl:school
  • owl:location
  • owl:isPartOf
  • owl:country

然而,当你不指定自定义前缀映射,则使用默认映射,根据其将owl映射到http://www.w3.org/2002/07/owl#,这是OWL 2。 OWL 2不包含所列标识符的任何定义,因此DBpedia不使用这些标识符。

DBpedia中使用标识符SchoollocationisPartOfcountry从名称空间http://dbpedia.org/ontology/,其被映射到前缀dbpedia-owl。因此,在你的查询中,只需使用你实际想要使用的本体的前缀。此外,请注意,dbpedia-owl:School是大写,dbpedia-owl:school与小s是属性。

SELECT ?school 
WHERE { 
    ?school a dbpedia-owl:School. 
    ?school dbpedia-owl:location ?city. 
    ?city dbpedia-owl:isPartOf ?state. 
    ?state dbpedia-owl:country <http://dbpedia.org/resource/United_States>. 
} 
+1

非常感谢。在编辑之前,我将它作为dbpedia-owl。你可以看到历史,但我认为这是错误的,并将其改为猫头鹰。你知道我是否可以用“高中”来代替“学校”。在查询中替换它不起作用。 – Tasos 2015-04-01 11:18:20

+0

@AnastasiosVentouris:自动支持的前缀的完整列表从[基于Web的前端](http://www.dbpedia.org/sparql)链接,它是[here](http://www.dbpedia。组织/ SPARQL?nsdecl)。至于高中,http://dbpedia.org/ontology/Highschool没有显示任何内容,通常意味着这样的URI没有定义。似乎有一个http://dbpedia.org/ontology/highschool属性,但它不清楚它在DBpedia数据中实际应用的程度。 (Highschool是一个非常特定国家的概念,这可能是为什么它不被定义为一个类。) – 2015-04-01 11:29:55