我正在考虑使用图形数据库来存储IFC数据。理想情况下,数据库应提供一种方法来定义 IFC 架构中定义的所有规则类型。但是,我认为没有任何这样的数据库,因为 IFC 中的某些规则类型非常复杂,需要查询数据库。其他方法很简单,例如 GUID 的唯一性、必需属性的存在或数据验证。Neo4j似乎有一些约束执行方法:
Neo4j通过使用约束来帮助加强数据完整性。约束可以应用于节点或关系。可以创建唯一的节点属性约束,以及节点和关系属性存在约束。
是否有其他方法可以确保输入的数据符合预定义的架构?
还是有其他图形数据库更适合这项工作?
您可以通过创建事务事件处理程序来实现几乎所有您想要的东西。
http://neo4j.com/docs/java-reference/current/javadocs/org/neo4j/graphdb/event/TransactionEventHandler.html
您还可以查看GraphAware Framework及其所有子模块的用例,以及创建和部署neo4j扩展的便利性。
取决于是否需要数据库本身强制执行的架构,或者您是否同意在应用程序层完成该架构。
我刚刚将 Restagraph 提升到"工作原型"级别,我的下一个技巧是 Dockerizing 它。它是一个框架,使您能够通过在 Neo4J 中创建具有特定标签的节点和关系来定义模式,并动态创建 REST API 来强制执行它。
它也是用Common Lisp编写的,所以如果你等待Docker镜像:),我会理解