了解Wikidata日期属性的日期精度

发布于 2025-02-01 20:37:05 字数 1450 浏览 4 评论 0原文

Wikidata API将基于日期的字段作为Datavalue $ type ==“ Time”。例如,考虑哈佛大学的启动日期(属性值== p571):

$mainsnak
$mainsnak$snaktype
[1] "value"

$mainsnak$property
[1] "P571"

$mainsnak$hash
[1] "5efb5e7d891727df657771128dcb0512f7f18e10"

$mainsnak$datavalue
$mainsnak$datavalue$value
$mainsnak$datavalue$value$time
[1] "+1636-01-01T00:00:00Z"

$mainsnak$datavalue$value$timezone
[1] 0

$mainsnak$datavalue$value$before
[1] 0

$mainsnak$datavalue$value$after
[1] 0

$mainsnak$datavalue$value$precision
[1] 9

$mainsnak$datavalue$value$calendarmodel
[1] "http://www.wikidata.org/entity/Q1985727"


$mainsnak$datavalue$type
[1] "time"


$mainsnak$datatype
[1] "time"


$type
[1] "statement"

$id
[1] "q13371$cf938885-4a4d-697c-a957-b2d7effe8bbb"

$rank
[1] "normal"

mainsnak $ datavalue $ value $ time“+1636-01-01T00:00:00:00 Z”当日期解析为1636-01-01。但是在网页上,唯一显示一年:

​/模棱两可/不相关。因此,我的问题是如何使用API​​来解析此日期的时间准确性?我怀疑这与$ mainsnak $ datavalue $ value $ precision

ps ps wikidata for Harvard的完整json有关:

library(tidyverse)
wikidata_id <- "Q13371"
res <- httr::GET(url = paste0('https://www.wikidata.org/wiki/Special:EntityData/',wikidata_id,'.json')) %>%
    httr::content() %>%
    .[['entities']] %>%
    .[[wikidata_id]]

The Wikidata API provides date-based fields as a datavalue$type == "time". For example consider Harvard Universities Inception Date (Property value == P571):

$mainsnak
$mainsnak$snaktype
[1] "value"

$mainsnak$property
[1] "P571"

$mainsnak$hash
[1] "5efb5e7d891727df657771128dcb0512f7f18e10"

$mainsnak$datavalue
$mainsnak$datavalue$value
$mainsnak$datavalue$value$time
[1] "+1636-01-01T00:00:00Z"

$mainsnak$datavalue$value$timezone
[1] 0

$mainsnak$datavalue$value$before
[1] 0

$mainsnak$datavalue$value$after
[1] 0

$mainsnak$datavalue$value$precision
[1] 9

$mainsnak$datavalue$value$calendarmodel
[1] "http://www.wikidata.org/entity/Q1985727"


$mainsnak$datavalue$type
[1] "time"


$mainsnak$datatype
[1] "time"


$type
[1] "statement"

$id
[1] "q13371$cf938885-4a4d-697c-a957-b2d7effe8bbb"

$rank
[1] "normal"

The mainsnak$datavalue$value$time is "+1636-01-01T00:00:00Z" which when parsed to a date is 1636-01-01. But on the webpage, the only the year is displayed:

enter image description here

I'm sure this is because the time accuracy is only as good as the year - Harvard was founded in 1636, the day and month are unknown/ambiguous/not relevant. So my question is how do I use the API to parse just the time accuracy of this date? I suspect it has something to do with $mainsnak$datavalue$value$precision

PS the full json from Wikidata for Harvard is pulled in R with:

library(tidyverse)
wikidata_id <- "Q13371"
res <- httr::GET(url = paste0('https://www.wikidata.org/wiki/Special:EntityData/',wikidata_id,'.json')) %>%
    httr::content() %>%
    .[['entities']] %>%
    .[[wikidata_id]]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

送舟行 2025-02-08 20:37:05

per https://www.wikidata.org/wiki/wiki/help:dates 9是年份,10个月,11个是一天。

Per https://www.wikidata.org/wiki/Help:Dates precision of 9 is year, 10 is month, 11 is day.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文