我使用维基数据来获取元素列表。在某些时候,我需要用同时添加到维基数据的内容更新列表。 我有最新实体的ID,所以我想只选择那些数字较大的实体。这是我找到的唯一方法,以获得我想要的东西:还有另一种方式吗?
维基数据上有21个顶级模特。让我们说我想选择那些在Claudia Schiffer(Q76717)之后加入的人。 这就是我设法做的事情(你可以尝试here):
SELECT ?item ?itemLabel
WHERE {
?item wdt:P106 wd:Q865851 .
FILTER (str(?item)>'http://www.wikidata.org/entity/Q76717')
SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr"}
}
GROUP BY ?item ?itemLabel
问题在于,我没有得到20个结果,而是只有1.我理解为什么(按字母顺序比较),但我无法想出一个能够进行真正比较的解决方案。
是否有办法提取实体ID并比较其代数值而不是其字符?或者你是否看到了达到目标的另一种方式?
提前致谢!
答案 0 :(得分:3)
嗯,最明显的方法是改变你的FILTER条件:
SELECT ?item ?itemLabel
WHERE {
VALUES (?id) {(76717)}
?item wdt:P106 wd:Q865851 .
FILTER (xsd:integer(STRAFTER(STR(?item), "http://www.wikidata.org/entity/Q")) > ?id)
SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr"}
}
# GROUP BY ?item ?itemLabel
但是,我不确定这是最好的方法。我会做一些研究。
不幸的是,维基达:
schema:dateModified
(尝试this query),schema:dateCreated
项。类似地,维基达: