想要提取Bob Dylan的假名。他的Wikidata页面为https://www.wikidata.org/wiki/Q392
一种方法是遍历以下树并解析P742
(化名)的值:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q392&format=json
但这是很多工作,而且是鲍勃·迪伦(Bob Dylan)所特有的;其他具有化名的人可能具有不同的JSON结构。
此查询适用于他的奖项:
SELECT ?item ?itemLabel ?linkTo ?linkToLabel {
?item wdt:P166 wd:Q37922 ;
wdt:P910 wd:Q8064684 .
OPTIONAL {
?item wdt:P166 ?linkTo ;
wdt:P31 wd:Q5 } .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
如here
缺点是它使用“主题的主要类别”(P910
)和目标“类别”(Q8064684
)的组合来指定“鲍勃·迪伦”。
对于该查询,我找不到使用他的QID(Q392
)的方法。
我不想像Group concat not working中所建议的那样进行文本搜索,因为有多个鲍勃·迪伦(Bob Dylan)。而且许多具有化名的人都没有类别,因此该技术无法推广。
此查询适用于职业,并使用其QID(Q392
),而不是“奖励”查询中的Bob Dylan类别(Q8064684
)。
SELECT * {
SERVICE <https://query.wikidata.org/sparql> {
wd:Q392 wdt:P31 wd:Q5 ;
wdt:P106 ?occupation
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
?occupation rdfs:label ?label
}
}
}
如here
,但是我找不到正确的SPARQL查询来选择假名(即文本),如下所示: https://www.wikidata.org/wiki/Q392
如何编写使用人的标识符(例如Bob Dylan的Q392)并可以配置(轻松切换)以选择“已收到的奖项”(P166),“职业”(P106)的Wikidata SPARQL查询或“假名”(P742)?