【问题标题】:Compliance to a schema in neo4j遵守 neo4j 中的模式
【发布时间】:2016-12-31 22:23:42
【问题描述】:

我正在考虑使用图形数据库来存储IFC 数据。理想情况下,数据库应该提供一种方法来定义在 IFC 模式中定义的所有规则类型。但是,我认为没有这样的数据库,因为 IFC 中的某些规则类型非常复杂,需要查询数据库。其他很简单,例如 GUID 的唯一性、强制属性的存在或data validation。 Neo4j 似乎有一些约束执行方法:

Neo4j 通过使用约束来帮助加强数据完整性。约束可以应用于节点或关系。可以创建唯一节点属性约束,以及节点和关系属性存在约束。

是否有其他方法可以确保输入的数据符合预定义的架构?

或者还有其他更适合这个工作的图数据库吗?

【问题讨论】:

  • 嗨@Thoran,请问您是如何将IFC 数据转换为neo4j 的?谢谢!
  • 我没有。但是有人已经做到了。在 Github 上寻找 IFC QA。如果找不到,请回来找我,我会尽力为您找到。
  • 感谢您的回复,遗憾的是它不可用。如果你有机会找到它会很棒!谢谢。
  • 请注意,我发现有人使用 Ruby 脚本完成了此操作,但我想检查您遵循的方法是否不同。
  • 没问题。看看能不能找到帮助@github.com/IndustryFoundationClasses/Questions/issues/12

标签: neo4j graph-databases step ifc


【解决方案1】:

您几乎可以通过创建事务事件处理程序来实现您想要的一切。

http://neo4j.com/docs/java-reference/current/javadocs/org/neo4j/graphdb/event/TransactionEventHandler.html

您还可以查看GraphAware Framework 和所有its submodules 的用例以及创建和部署neo4j 扩展的便利性。

【讨论】:

【解决方案2】:

取决于您是否需要由数据库本身强制执行的架构,或者您是否可以在应用程序层完成。

我刚刚将Restagraph 提升到“工作原型”级别,我的下一个技巧是将其 Dockerising。 它是一种框架,使您能够通过在 Neo4J 中使用特定标签创建节点和关系来定义架构,并动态创建 REST API 来执行它。

它也是用 Common Lisp 编写的,所以如果你等待 Docker 镜像我会明白的:)

【讨论】:

  • 欢迎来到 SO James。我完全赞成你的项目想法。我希望我能为它做出贡献,但我从来没有用 Common Lisp 或任何类似的东西写过代码。
  • 另外,我喜欢你的 github 工作流程。通过问题记录一切。了不起的工作:)
  • 这是我可以跟踪这一切的唯一方法,但谢谢!
  • 直接贡献会受到欢迎,如果收到实际使用它的人的回音,我会更加兴奋。如果您关注该项目,您会看到我何时将其 Docker 化,这应该是它对我以外的人有用的时候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2016-08-29
  • 2023-03-13
相关资源
最近更新 更多