4

我创建了一个在DBpedia SNORQL SPARQL 端点上运行的 SPARQL 查询。查询的目的是获取美国大学或学院的列表,包括它们的经度、纬度和禀赋。该查询似乎正在运行,但似乎缺少一些记录和/或属性。因此,例如,哈佛大学没有出现在结果中,即使它的DBpedia 记录存在并且属性应该与我的查询匹配。我不确定为什么该记录不显示。另一个例子是University of Massachusetts Boston,它作为查询结果出现,但结果没有得到经度和纬度属性,即使记录包含这些属性。这是 SPARQL 查询:

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX d: <http://dbpedia.org/ontology/>

SELECT ?uni ?link ?lat ?long ?endowment
WHERE {
?s foaf:homepage ?link ;
   rdf:type <http://schema.org/CollegeOrUniversity> ;
rdfs:label ?uni
OPTIONAL {?s geo:lat ?lat ;
             geo:long ?long . 
          ?s d:endowment ?endowment . }
FILTER (LANGMATCHES(LANG(?uni), 'en'))

{?s dbpedia2:country "U.S."@en . }
UNION
{?s dbpedia2:country "U.S." . }
UNION
{?s d:country :United_States . }

}
ORDER BY ?s
4

2 回答 2

5

您发布的查询只会选择具有 a 的实体,foaf:homepage哈佛大学没有。(也就是说,资源没有foaf:homepage属性。显然大学确实有主页。) UMass Boston与可选模式不匹配——

OPTIONAL {?s geo:lat ?lat ;
             geo:long ?long . 
          ?s d:endowment ?endowment . }

-- 因为该模式仅在?s具有 a geo:lat、 ageo:long和 a时匹配d:endowment。尽管模式是可选的,但整个模式必须匹配或不匹配;你没有得到部分匹配。

这是您的查询,经过重新设计以使用DBPedia SPARQL 端点当前支持的内置命名空间 (该列表会随着时间的推移而变化),并OPTIONAL根据需要将部分分解并移至末尾。(将它们移到最后只是出于审美考虑。)我尝试了一些不同的约束,有趣的是,只有 32 所大学有. dbpprop:country "U.S."@en,而 273 有dbpprop:country "United States"@en. 总共有 7620 个结果。

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX dbpprop: <http://dbpedia.org/property/>

SELECT ?label ?homepage ?lat ?long ?endowment
WHERE {
  ?school a <http://schema.org/CollegeOrUniversity> 
  { ?school dbpedia-owl:country dbpedia:United_States }
  UNION
  { ?school dbpprop:country dbpedia:United_States }
  UNION 
  { ?school dbpprop:country "U.S."@en }
  UNION 
  { ?school dbpprop:country "United States"@en }

  OPTIONAL { ?school rdfs:label ?label .
             FILTER (LANGMATCHES(LANG(?label), 'en')) }
  OPTIONAL { ?school foaf:homepage ?homepage }
  OPTIONAL { ?school geo:lat ?lat ; geo:long ?long }
  OPTIONAL { ?school dbpedia-owl:endowment ?endowment }
}

SPARQL 结果

于 2013-06-12T03:47:05.957 回答
1

您正在寻找,foaf:homepage但其中一些没有分配这个。这是第一个吸引我眼球的东西。通过逐位删除每个元素来检查查询的其余部分,并查看结果集必须提供什么。

于 2013-06-12T03:44:56.433 回答