如何在维基数据SPARQL中搜索化名的人?

How can I search for a person who goes by a pseudonym in Wikidata SPARQL?

提问人:Travis 提问时间:10/22/2023 最后编辑:Travis 更新时间:10/22/2023 访问量:59

问:

因此,我有以下维基数据SPARQL,它将获取一个人的基本传记信息。如果我给它提供一个化名,例如(麦当娜、雪儿、碧昂丝),它每次都会超时。当然,如果我提供一个真实的名字,例如“哈里森·福特”或“汤姆·克鲁斯”,效果很好。问题线是这样的

?person rdfs:label "Madonna"@en.

下面是整个查询

SELECT ?person ?personLabel ?birthdate (GROUP_CONCAT(DISTINCT ?occupationLabel_en; separator=", ") as ?occupations) ?birthPlaceLabel 
?image (GROUP_CONCAT(DISTINCT ?spouseLabel_en; separator=", ") as ?spouses) 
?familyLabel ?familyDescription ?qid
WHERE {
  ?person wdt:P31 wd:Q5. # Select instances of humans
  ?person rdfs:label "Madonna"@en.

  OPTIONAL { ?person wdt:P569 ?birthdate. } # Retrieve birthdate
  OPTIONAL { ?person wdt:P106 ?occupation. } # Retrieve occupation
  OPTIONAL { ?person wdt:P19 ?birthPlace. } # Retrieve place of birth
  OPTIONAL { ?person wdt:P18 ?image. } # Retrieve image

  OPTIONAL {
    ?occupation rdfs:label ?occupationLabel_en.
    FILTER(LANG(?occupationLabel_en) = "en")
  }

  OPTIONAL {
    ?person wdt:P26 ?spouse.
    ?spouse rdfs:label ?spouseLabel_en.
    FILTER(LANG(?spouseLabel_en) = "en")
  }

  OPTIONAL { ?person wdt:P22 ?family. } # Retrieve family info
  BIND(STR(?person) AS ?qid) # Retrieve Wikidata QID

  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?person ?personLabel ?birthdate ?birthPlaceLabel ?image ?familyLabel ?familyDescription ?qid
LIMIT 1

这里是 SPARQL 查询,如果你想看到它的实际效果。当然,如果我更改 SPARQL 以搜索 QID,它将起作用,但用户不会知道这一点。

我确实知道一个解决方案,那就是从 SPARQL 查询中获取该人的 QID,然后在该 QID 上执行另一个 SPARQL 查询,但我真的试图避免这种情况。如果我提出的解决方案是搜索化名的人的唯一方法,那么我想它就是这样。让我知道。

SPARQL 维基数据

评论

0赞 Luuk 10/22/2023
搜索“Travis”时也会发生超时,但在搜索“Travis”时会给出未找到的快速结果。你对搜索名称中的“ ”做了什么?(我不了解 SQPARQL)
0赞 Travis 10/22/2023
我也不是 SPARQL 的佼佼者,而是 ?person rdfs:label “Madonna”@en。与英语中的“麦当娜”完全匹配。当然,“麦当娜”会很快回来而没有结果的原因,是没有人有“麦当娜”这个名字(带空格)。
2赞 Stanislav Kralin 10/22/2023
OPTIONALfor occupation 的标签应该嵌套在 for occupation 本身中:w.wiki/7rYBOPTIONAL
1赞 Travis 10/22/2023
@StanislavKralin,你又帮我交配了。我总是忘记小事。我什至没有想过要尝试一下。希望我很快就会在 SPARQL 上变得更好。

答: 暂无答案