2

我正在尝试列出在我安装的 wikibase 上创建的所有属性,使用 docker-compose,基于安装。

现在,要列出此 wikibase 中可用的所有属性,类似于通过以下方式获取该列表:

<wikibase.url>wiki/Special:ListProperties

我还使用以下 SPARQL 查询通过 SPARQL 提取了该列表:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX schema: <http://schema.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT DISTINCT
  ?property
  ?propertyType
  ?propertyLabel
  ?propertyAltLabel
WHERE {
  ?property a wikibase:Property ;
              rdfs:label ?propertyLabel ;
              wikibase:propertyType ?propertyType .
  OPTIONAL {?property skos:altLabel ?propertyAltLabel .}
}

运行该 SPARQL 查询的成本很高,而且我需要经常运行该查询,因此我非常希望将属性列表获取到核心 wikibase API。

那可能吗?

4

1 回答 1

4

如果您知道目标 wiki 上属性的名称空间编号(如果 wiki 有一个 Item: 名称空间,则通常为 122,如果像 Wikidata 上的项目位于主名称空间中,则通常为 120),您可以使用核心allpages APIhttps ://www.wikidata.org/w/api.php?action=query&list=allpages&apnamespace=120

要同时获取标签,请将其用作生成器并将其与 entityterms API 结合(1.35 中的新功能;看起来尚未记录,但请参阅T257658):https ://www.wikidata.org/w /api.php?action=query&generator=allpages&gapnamespace=120&prop=entityterms&wbetterms=label

于 2020-09-26T15:40:34.333 回答