gpt4 book ai didi

sparql - 想要从结果中删除没有标签的实体

转载 作者:行者123 更新时间:2023-12-04 15:46:27 25 4
gpt4 key购买 nike

我想问一个关于标签的棘手问题。使用 SERVICE关键字喜欢 SERVICE wikibase:label { bd:serviceParam wikibase:language "ko,en". }使我们能够在第一个偏好未与目标实体标签匹配时切换语言标签。
但是,我想删除一些没有任何标签的实体。然而,service关键字 当实体没有任何语言匹配标签时,添加带有 Qxxxx 标签的实体。如何从结果中删除实体?
我知道我们可以使用 rdfs:label 过滤掉它对于所有变量,但将所有 rdfs:label 设置为所有变量是另一个头疼的问题。所以我想知道如何使用 SERVICE wikibase:label 改进查询我想过滤掉没有任何标签的实体。我应该更换 SERVICErdfs:label ?

    SELECT DISTINCT ?vLabel 
WHERE {
hint:Query hint:optimizer "None" .
{
SELECT DISTINCT ?i {
?i wdt:P31 wd:Q515.
}LIMIT 15
}
?v wdt:P937 ?i.
SERVICE wikibase:label { bd:serviceParam wikibase:language "ko,en". }
}
LIMIT 3
RESULT:
Q59780594 <- no lang label
Q24642253 <- no lang label

最佳答案

维基数据标签服务没有提供一种内置方式来跳过没有标签的资源。

最简单的选择是将查询作为子查询包装到新的 SELECT 中。查询,并使用过滤器删除任何 Qxxxx标签。这使用了只有真实标签具有语言标签的事实:

SELECT ?vLabel {
{
SELECT DISTINCT ?vLabel
...
}
FILTER lang(?vLabel)
}

编辑:下面是我的原始(和劣等)答案,它在标签本身上使用了正则表达式来删除 Qxxxx那些。它还会过滤掉任何实际具有 Qxxxx 形式标签的资源。 ,如果维基数据中存在此类资源。
SELECT ?vLabel {
{
SELECT DISTINCT ?vLabel
...
}
FILTER (!REGEX(?vLabel, "^Q[0-9]+$"))
}

关于sparql - 想要从结果中删除没有标签的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574205/

25 4 0