跳转到内容

SPARQL/SERVICE - mwapi

来自维基教科书,开放世界中的开放书籍

Mediawiki API 服务允许从 SPARQL 调用 Mediawiki API,并在 SPARQL 查询内部接收结果。查询由带有 URL wikibase:mwapi 的 SERVICE 发起。目前支持的 Mediawiki 终结点是:*.wikipedia.org, commons.wikimedia.org, www.mediawiki.org, www.wikidata.org, test.wikidata.org

目前支持以下服务

服务 文档 输入 输出 描述
生成器 参见 此处 generator, prop, pprop title, item, pageid, lastrevid, timestamp 调用任何生成器 API。使用“generator”参数指定,并使用特定生成器参数进一步修改搜索(请参见下面的示例)。
类别 参见 此处 titles,cllimit category, title 获取页面上的类别列表。
搜索 参见 此处 srsearch,srwhat,srlimit title 维基百科中的全文搜索。
实体搜索 参见 此处 search,language,type,limit item,label 按标题进行维基数据实体搜索。

必填参数以粗体显示。有关输入参数的含义,请参考服务文档(链接在“文档”列中)。

请参阅 Mediawiki API 服务文档页面 上的完整描述。

示例:查找维基百科类别的成员

[编辑 | 编辑源代码]
SELECT * WHERE {
  wd:Q6501349 wdt:P910 ?category . # Parking lot - Main category
  ?link schema:about ?category; schema:isPartOf <https://en.wikipedia.org/>; schema:name ?title .
  SERVICE wikibase:mwapi {
     bd:serviceParam wikibase:api "Generator" .
     bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
     bd:serviceParam mwapi:gcmtitle ?title .
     bd:serviceParam mwapi:generator "categorymembers" .
     bd:serviceParam mwapi:gcmprop "ids|title|type" .
     bd:serviceParam mwapi:gcmlimit "max" .
     bd:serviceParam wikibase:limit 50 .
    # out
    ?subcat wikibase:apiOutput mwapi:title  .
    ?ns wikibase:apiOutput "@ns" .
    ?item wikibase:apiOutputItem mwapi:item .
  }
}

试试看!

描述一个 Commons 类别中文件的荷兰语标签的语句

[编辑 | 编辑源代码]
SELECT ?file ?title ?depicts ?depicts_label
WITH
{ SELECT ?file ?title
  WHERE
  { SERVICE wikibase:mwapi
    {
      bd:serviceParam wikibase:api "Generator" .
      bd:serviceParam wikibase:endpoint "commons.wikimedia.org" .
      bd:serviceParam mwapi:gcmtitle "Category:Historia Naturalis van Rudolf II" .
      bd:serviceParam mwapi:generator "categorymembers" .
      bd:serviceParam mwapi:gcmtype "file" .
      bd:serviceParam mwapi:gcmlimit "max" .
      ?title wikibase:apiOutput mwapi:title .
      ?pageid wikibase:apiOutput "@pageid" .
    }
    BIND (URI(CONCAT('https://commons.wikimedia.org/entity/M', ?pageid)) AS ?file)
  }
} AS %get_files
WHERE
{  INCLUDE %get_files
  ?file wdt:P180 ?depicts .
  service <https://query.wikidata.org/sparql> {
    OPTIONAL {?depicts rdfs:label ?depicts_label FILTER (lang(?depicts_label) = 'nl') } 
    }
}

试试看!

参考文献

[编辑 | 编辑源代码]


华夏公益教科书