何时会有Neo4j支持日期作为属性?

5

作为一名中世纪历史学家,我正在构建有关宪章和其他历史文献信息的图形数据库。

如果能够添加日期作为属性将非常有帮助,因为我们经常需要查找特定时间范围内的文档。

目前,我正在使用规范化数据(YYYY-MM-DD)结合正则表达式,但原生支持规范化的日期信息将非常好。

问候, 安德烈亚斯

2个回答

2

大多数人使用长整型属性存储自纪元以来的毫秒数(也称为Date.getTime())来存储日期/时间信息。这样,您可以轻松地进行时间信息的数学计算和比较。如果需要时区,请在附加属性中存储时区名称。


1
刚刚想到他应该确保整数字段足够大,以存储他需要存储的中世纪日期的负数。此外,我建议始终存储UTC时间,尽管他似乎只处理日期。考虑到他正在存储日期,也许用一个代表公元后(正数)或公元前(负数)天数的整数会更简单。 - Brian Underwood
啊,1970年之前的日期被存储为负数? - Andreas Kuczera
取决于你的实现方式。当我在 Ruby 中尝试时,它给了我一个负数。 - Brian Underwood

1

Stefan的答案可能比我的更好,不过根据您尝试做什么,您还可以考虑将日期层次结构作为图表的一部分。例如,您可以使用以下结构:

(:Year {text: '1227'})<-[:IN_YEAR]-(:Month {text: '1227-08'})<-[:IN_MONTH]-(:Day {text: '1227-08-18'})<-[:HAPPENED_ON]-(:Event {title: 'Death of Genghis Khan'})

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Andreas Kuczera
你认为是否可能将所有日期(例如14世纪的所有日期)作为节点添加,然后将特许节点连接到相应的日期节点上? - Andreas Kuczera
你可以将日期/时间字符串以及树形结构存储起来。实际上,这取决于你想要做什么。我现在找不到那篇文章了,但我看过一篇文章描述了如何做到这一点,并在后续的日期节点之间放置“NEXT”关系,以便更好地查询范围,但如果你的日期是稀疏的,我不确定这将如何工作。 - Brian Underwood
是的,这当然是可能的。 (100年* 365天)+(100年* 12个月)+(100年)=总共37,800个节点。 在我看来,这不会太糟糕。 - Brian Underwood
您可以使用GraphAware Timetree来帮助构建时间结构并回答范围查询。它将按需构建树的部分。http://graphaware.com/neo4j/2014/08/20/graphaware-neo4j-timetree.html 声明:我在GraphAware工作。 - Luanne
哇,太棒了!谢谢! - Brian Underwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接