Properties 如何使用SPARQL检索按使用情况排序的Wikidata的所有属性

Properties 如何使用SPARQL检索按使用情况排序的Wikidata的所有属性,properties,sparql,wikidata,Properties,Sparql,Wikidata,我发现一个查询检索Wikidata的所有属性以及属性id、标签、描述和别名 PREFIX bd: <http://www.bigdata.com/rdf#> PREFIX schema: <http://schema.org/> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX wikibase: <http://wikiba.se/ontology#> SELECT ?p ?p

我发现一个查询检索Wikidata的所有属性以及属性id、标签、描述和别名

PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX schema: <http://schema.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX wikibase: <http://wikiba.se/ontology#>

SELECT ?p ?pt ?pLabel ?d ?aliases WHERE {
  {
    SELECT ?p ?pt ?d
              (GROUP_CONCAT(DISTINCT ?alias; separator="|") as ?aliases)
    WHERE {
      ?p wikibase:propertyType ?pt .
      OPTIONAL {?p skos:altLabel ?alias FILTER (LANG (?alias) = "en")}
      OPTIONAL {?p schema:description ?d FILTER (LANG (?d) = "en") .}
    } GROUP BY ?p ?pt ?d
  }
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
  }
}

我会在不依赖Q46的情况下组合它们,但我不知道具体如何组合。

这样的SPARQL查询将花费太多时间,导致执行超时。备选方案是:

  • 开发并使用一个
    • 从Wikidata JSON转储的bzip2存档中解压缩约900 KiB的块 ()
    • 将解压后的数据从块传递到JSON解析器(它可以是事件驱动的JSON解析器)
    • 解析提取有价值数据的JSON
  • 开发并使用一个
    • 如第1点所述读取bzip2转储归档文件
    • 将解析的JSON数据导入SQL数据库
    • 在您自己的数据库上执行SQL查询,以提取有价值的数据
  • 另一种涉及较少开发工作的方式是:
    • 提取Wikidata JSON转储归档文件(~65 GiB),生成~1.4 TB的JSON文件
    • 开发一个小应用程序,使用事件驱动解析器解析该类型的json文件
    • 解析提取有价值数据的JSON

    可能是这样的吧?--<代码>选择?属性?属性标签?属性标签?属性描述?计数其中{SELECT?属性(计数(?项)为?计数)其中{item?语句wd:Q46。?属性wikibase:statementProperty?语句。}分组依据?属性}服务wikibase:label{bd:serviceParam wikibase:language“[自动语言],en.“}}ORDER BY DESC(?count)@UninformedUser那么,查询不应该依赖于Q46-这是一个关键问题。所有现有的陈述都应该考虑在内。那么最终的结果是什么呢?每个属性的语句数?我不确定问题现在在哪里?我的意思是,如果您不想依赖于
    wd:Q46
    ,为什么不用变量替换它?很明显,这个查询可能会导致超时,原因很明显——它是一个公共共享服务,有hat、9000个属性或其他什么?模式
    ?s?p?o
    是最坏的情况,因为无法使用数据库索引。在这种情况下,我建议先获取所有属性,然后执行多个查询,每个查询在
    VALUES
    子句中给出50或100个属性。因此,一个小的客户端Python脚本将是我的选择。@UninformedUser我只需要属性id、类型、标签、描述和别名,就像在第一个查询中一样。也许可以添加count,但不能添加语句和条目。PS我提取了这些属性,并将它们发布到
    SELECT ?property ?count
    WHERE {
      SELECT ?property (COUNT(?item) AS ?count)
      WHERE {
        ?item ?statement wd:Q46 . # items pointing to Q46 through a statement
        ?property wikibase:statementProperty ?statement . # property used for that statement
      } GROUP BY ?property # count usage for each property pointing to that entity
    } ORDER BY DESC(?count) # show in descending order of uses