我想在单个 SPARQL 查询中从维基数据查询服务的维基数据 ID 获取维基百科页面 ID。
第一个 SPARQL 查询从标题页获取维基数据 ID (
wd:Q3131
):“Alpes-de-Haute-Provence”
SELECT ?item ?itemLabel ?itemDescription WHERE {
?url rdf:type schema:Article;
schema:about ?item; schema:name ?name ;
schema:isPartOf <https://fr.wikipedia.org/>;
schema:name "Alpes-de-Haute-Provence"@fr.
SERVICE wikibase:label {
bd:serviceParam
wikibase:language "fr,[AUTO_LANGUAGE],en"
}
}
第二个 SPARQL 查询从维基数据 ID 获取维基百科页面 ID
SELECT ?pageid WHERE {
VALUES (?item) {(wd:Q3131)}
[ schema:about ?item ; schema:name ?name ;
schema:isPartOf <https://fr.wikipedia.org/> ]
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:endpoint "fr.wikipedia.org" .
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam mwapi:generator "allpages" .
bd:serviceParam mwapi:gapfrom ?name .
bd:serviceParam mwapi:gapto ?name .
?pageid wikibase:apiOutput "@pageid" .
}
}
可以在单个 SPARQL 查询中完成此操作吗?
@UninformedUser 提出的解决方案
SELECT ?item ?itemLabel ?itemDescription ?pageid WHERE {
?url rdf:type schema:Article;
schema:about ?item;
schema:name ?name ;
schema:isPartOf <https://fr.wikipedia.org/>;
schema:name "Alpes-de-Haute-Provence"@fr.
SERVICE wikibase:label {
bd:serviceParam
wikibase:language "fr,[AUTO_LANGUAGE],en"
}
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:endpoint "fr.wikipedia.org" .
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam mwapi:generator "allpages" .
bd:serviceParam mwapi:gapfrom ?name .
bd:serviceParam mwapi:gapto ?name .
?pageid wikibase:apiOutput "@pageid" .
}
}