如何使用SPARQL通过ID获取维基数据标签?

fat*_*afa 6 sparql wikidata wikidata-api

如何使用SPARQL端点通过ID获取维基数据中的英语或任何其他语言的标签?

Fra*_*ini 10

假设wd:Q146190是您的wikidata实体ID

获取特定实体ID的特定语言的标签:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX wd: <http://www.wikidata.org/entity/> 
SELECT  *
WHERE {
        wd:Q146190 rdfs:label ?label .
        FILTER (langMatches( lang(?label), "EN" ) )
      } 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

获取您特定实体ID的任何语言的所有标签:

SELECT * WHERE {
  wd:Q146190 rdfs:label ?label 
}
Run Code Online (Sandbox Code Playgroud)

在这里链接到实时尝试按播放运行查询然后你可以下载一个完整的JSON并获得这样的重新响应..只是一个行李箱复制在这里:

{
    "head": {
        "vars": [
            "label"
        ]
    },
    "results": {
        "bindings": [
            {
                "label": {
                    "xml:lang": "ar",
                    "type": "literal",
                    "value": "???? ????? ??????"
                }
            },
            {
                "label": {
                    "xml:lang": "az",
                    "type": "literal",
                    "value": "Kökyumrulu gün?baxan"
                }
            },
          ..etc,etc.
Run Code Online (Sandbox Code Playgroud)

获取具有多个id的响应结果集中的每个实体ID的标签

在这种情况下,您应该使用Label服务

SELECT ?p ?pLabel ?w ?wLabel WHERE {
   wd:Q30 p:P6/ps:P6 ?p .
   ?p wdt:P26 ?w .
   SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
   }
 }
Run Code Online (Sandbox Code Playgroud)

使用此服务添加Label到变量(即:对于?p标签,您必须使用?pLabel然后添加

   SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
   }  
Run Code Online (Sandbox Code Playgroud)

WHERE街区