我正在开发一个 Java 应用程序,它管理一个非常大的实体模型及其关系。如“A使用B”、“B在C中实现”、“C位于D”。所有这些实体及其属性都存储在 noSQL 数据库中。
我想做的是有逻辑谓词,例如:
- 当 A 使用 B 时,B 也被 A 使用
- 当 A 使用 B 并且 B 在 C 中实现时,A 依赖于 C
然后,当用户打开 A 的详细信息屏幕时,他不仅可以看到 A 的所有属性,还可以看到:
- A 使用 B
- A 依赖于 C
- A 调用 D
我可以对所有这些谓词进行硬编码,但我希望能够对其进行配置。有谁知道如何解决这个问题?
我无法使用 SQL。我没有像 Prolog 这样的东西可以调用。 Java 有一个 prolog 模拟器,但恐怕它想在评估谓词之前先将整个数据模型加载到内存中。
感谢任何帮助。
最佳答案
Prolog 有多种 Java 实现(例如 Lean Prolog、JIProlog、tuProlog、Jekejeke Prolog、Minerva 等)。有些提供 Prolog 和 Java 之间的双向接口(interface)。其中至少之一 JIProlog 支持子句的外部 Prolog 数据库,显然允许使用这些子句而不将它们全部加载到内存中。如果将数据从 noSQL 数据库导出到 Prolog 文件是一个可行的选择,那么这可能是一个值得探索的解决方案。
关于java - 评估 Java 中的逻辑谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097266/