Sparql 如何从Wikidata获取笔名?
想提取鲍勃·迪伦的笔名。他的维基数据页面是 一种方法是遍历以下树并解析Sparql 如何从Wikidata获取笔名?,sparql,wikidata,Sparql,Wikidata,想提取鲍勃·迪伦的笔名。他的维基数据页面是 一种方法是遍历以下树并解析P742(笔名)的值: 但这是很多工作,特别是鲍勃·迪伦;其他使用假名的人可能有不同的JSON结构 此查询适用于他的奖项: SELECT ?item ?itemLabel ?linkTo ?linkToLabel { ?item wdt:P166 wd:Q37922 ; wdt:P910 wd:Q8064684 . OPTIONAL { ?item wdt:P166 ?linkTo ;
P742
(笔名)的值:
但这是很多工作,特别是鲍勃·迪伦;其他使用假名的人可能有不同的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". }
}
如所见
缺点是它使用“主题的主要类别”(P910
)和目标“类别”(Q8064684
)的组合来指定“Bob Dylan”
对于该查询,我找不到使用其QID的方法(Q392
)
我不想像中建议的那样进行文本搜索,因为有不止一个Bob Dylan。而且,许多使用笔名的人不会有一个类别,所以这项技术无法推广
此查询适用于职业,并使用其QID(Q392
),而不是“奖励”查询中的Bob Dylan类别(Q8064684
)
选择*{
服务{
wd:Q392 wdt:P31 wd:Q5;
wdt:P106?职业
服务维基库:标签{
bd:serviceParam wikibase:language“en”。
?职业RDF:标签?标签
}
}
}
如所见
但是我找不到正确的SPARQL查询来选择笔名(即文本),如下所示:
如何编写使用个人标识符(例如Bob Dylan的Q392)的Wikidata SPARQL查询,并且可以配置(轻松切换)以选择“获奖”(第166页)、“职业”(第106页)或“笔名”(第742页)?另一个被语句弄糊涂的用户…请参阅语句排名,“最佳”首选:
SELECT*{SERVICE{wd:Q392 wdt:P31 wd:Q5;p:P742?语句。?语句ps:P742?值。?语句wikibase:rank?rank。可选{语句a?best.}}}
,因此您可以始终使用上面的查询来获取所有数据,而不仅仅是首选数据。查询的积分归StanislavKralin()是的,我不知道如何处理语句或truthy语句。让我研究一下您的评论,以确保我理解并能将其付诸实施-返回给您。@AKSW请发布您的答案,我将接受它
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
}
}
}