使用维基数据查询服务快速查询出版日期
Fast publication date lookup with Wikidata Query Service
有没有一种方法可以在维基数据查询服务的 SPARQL 中快速查找发布日期以查找特定日期(例如今天)的发布?
我希望像这样的查询会很快:
SELECT * WHERE {
?work wdt:P577 ?datetime .
BIND("2018-09-28T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?now_datetime)
FILTER (?datetime = ?now_datetime)
}
LIMIT 10
但是,在 https://query.wikidata.org
的 SPARQL 端点上使用它时超时
范围查询似乎都不快。将近 30 秒后 returns 下面的查询:
SELECT * WHERE {
?work wdt:P577 ?datetime .
FILTER (?datetime > "2018-09-28T00:00:00Z"^^xsd:dateTime)
}
LIMIT 1
诀窍是避免全扫描并使用索引:
-
SELECT * WHERE {
VALUES (?datetime) {("2018-09-28T00:00:00Z"^^xsd:dateTime)}
?work wdt:P577 ?datetime .
} LIMIT 10
-
SELECT * WHERE {
VALUES (?datetime) {("2018-09-28T00:00:00Z"^^xsd:dateTime)}
?work wdt:P577 ?date_time .
hint:Prior hint:rangeSafe true .
FILTER (?date_time > ?datetime)
} LIMIT 10
[The rangeSafe
hint] declare[s] that the data touched by the query for a specific triple pattern is strongly typed, thus allowing a range filter to be pushed down onto an index.
有没有一种方法可以在维基数据查询服务的 SPARQL 中快速查找发布日期以查找特定日期(例如今天)的发布?
我希望像这样的查询会很快:
SELECT * WHERE {
?work wdt:P577 ?datetime .
BIND("2018-09-28T00:00:00Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?now_datetime)
FILTER (?datetime = ?now_datetime)
}
LIMIT 10
但是,在 https://query.wikidata.org
的 SPARQL 端点上使用它时超时范围查询似乎都不快。将近 30 秒后 returns 下面的查询:
SELECT * WHERE {
?work wdt:P577 ?datetime .
FILTER (?datetime > "2018-09-28T00:00:00Z"^^xsd:dateTime)
}
LIMIT 1
诀窍是避免全扫描并使用索引:
-
SELECT * WHERE { VALUES (?datetime) {("2018-09-28T00:00:00Z"^^xsd:dateTime)} ?work wdt:P577 ?datetime . } LIMIT 10
-
SELECT * WHERE { VALUES (?datetime) {("2018-09-28T00:00:00Z"^^xsd:dateTime)} ?work wdt:P577 ?date_time . hint:Prior hint:rangeSafe true . FILTER (?date_time > ?datetime) } LIMIT 10
[The
rangeSafe
hint] declare[s] that the data touched by the query for a specific triple pattern is strongly typed, thus allowing a range filter to be pushed down onto an index.