代码之家  ›  专栏  ›  技术社区  ›  Yuehai

通过SPARQL获取Wikidata实体描述,无需Wikidata标签服务

  •  3
  • Yuehai  · 技术社区  · 7 年前

    我在上找到以下代码段 opendata.stackexchange.com ,它从Wikidata返回美国公民的姓名和描述:

    prefix wdt: <http://www.wikidata.org/prop/direct/>
    prefix wd: <http://www.wikidata.org/entity/>
    PREFIX wikibase: <http://wikiba.se/ontology#>
    SELECT ?Name ?itemDescription WHERE {
      ?item wdt:P27 wd:Q30 .
      ?item rdfs:label ?Name
      SERVICE wikibase:label {
        bd:serviceParam wikibase:language "en" .
       }
    }
    LIMIT 3
    

    可以在以下位置计算查询: https://query.wikidata.org/

    我试图获取特定实体的描述,例如Q3(life)。但在这种情况下 labelService 不返回任何内容。

    prefix wdt: <http://www.wikidata.org/prop/direct/>
    prefix wd: <http://www.wikidata.org/entity/>
    PREFIX wikibase: <http://wikiba.se/ontology#>
    SELECT ?Name ?itemDescription WHERE {
        wd:Q3 rdfs:label ?Name
        SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
    }
    
    LIMIT 3
    

    编辑:我使用的是Virtuoso,因此不能依赖Wikidata标签服务。

    1 回复  |  直到 4 年前
        1
  •  3
  •   Yuehai    7 年前

    我正在使用

    PREFIX wd: <http://www.wikidata.org/entity/>
    PREFIX schema: <http://schema.org/>
    
    SELECT ?o
    WHERE 
    {
      wd:Q3 schema:description ?o.
      FILTER ( lang(?o) = "en" )
    }
    

    现在,因为我正在查询一个具有全文搜索功能的Virtuoso服务器,所以最好是一次就用其他属性检索描述。