【问题标题】:DBpedia SPARQL Query US UniversitiesDBpedia SPARQL 查询美国大学
【发布时间】:2017-08-03 06:57:47
【问题描述】:

我创建了一个在 DBpedia SNORQL SPARQL endpoint 上运行的 SPARQL 查询。查询的目的是获取美国大学或学院的列表,包括它们的经度、纬度和禀赋。该查询似乎正在运行,但似乎缺少一些记录和/或属性。因此,例如,哈佛大学没有出现在结果中,即使它的DBpedia record 存在并且属性应该与我的查询匹配。我不确定为什么该记录不显示。另一个例子是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

【问题讨论】:

    标签: sparql dbpedia


    【解决方案1】:

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

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

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

    这是您的查询,重新设计为使用 the built-in namespaces that the DBPedia SPARQL endpoint currently supports(该列表会随着时间的推移而变化),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 Results

    【讨论】:

    • 我目前在指定端点运行此查询时收到错误Virtuoso 37000 Error SP030: SPARQL compiler, line 16: Undefined namespace prefix at 'dbpedia-owl' before 'dbpedia:United_States'。目前没有列出dbpedia-owl PREFIX。我将尝试将其更改为 owl 和/或删除该联合元素,然后比较结果计数。
    • 删除 dbpedia-owl 行后,我在 'dbpedia:United_States' 之前得到 'dbpprop' 处的未定义命名空间前缀。您有机会为当前的查询系统更新它吗?我会继续寻找线索...
    • @user3175580 DBpedia 的 SPARQL 端点更改了一堆预定义的命名空间前缀,但没有保留旧的前缀。当前列表在这里:dbpedia.org/sparql?help=nsdecl。我刚刚更新了这个,但我有关于 DBpedia 和 SPARQL 的 200 answers,所以很遗憾,我真的没有时间修复其中的大部分。
    • 好的,谢谢!然而,似乎 DBpedia 目前在此搜索中缺少很多大学。我什至将?school a 更改为dbpedia-owl:EducationalInstitution,但几乎所有加州大学的结果都丢失了,包括dbpedia.org/page/University_of_California_Los_Angeles——似乎这个条目没有表明它是一所学校的属性。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多