gpt4 book ai didi

neo4j - 图 DB 与 Prolog(或 miniKanren)

转载 作者:行者123 更新时间:2023-12-03 12:14:40 25 4
gpt4 key购买 nike

最近我一直在研究像 Neo4j 这样的图形数据库以及 Prolog 和 miniKanren 中的逻辑编程。从我到目前为止所学到的,两者都允许指定事实和它们之间的关系,并且还可以查询结果系统以进行一些选择。所以,实际上我看不出它们之间有多大区别,因为它们都可以用来构建图形和查询它,但使用不同的语法。然而,它们被呈现为完全不同的软件。

除了数据库可能会提出一种更有效的时空存储技术的技术性,以及像迷你看人这样的微小逻辑内核更简单和可嵌入之外,如果它们都只是一个图数据库,那么图数据库和逻辑编程语言之间的实际区别是什么? + 查询 API?

最佳答案

不,那些东西所体现的逻辑编程和neo4j是完全不同的。

在一个层面上,你是对的,它们在概念上都相当于图存储和图查询。但是对于逻辑编程,它只是概念上的图形查询,不能保证它实际上是以这种方式存储的(neo4j 就是这样)。

其次,通过逻辑编程,您通常会尝试建立 horn clauses这使您可以通过大量数据进行推理。您可以将 horn 从句视为一个简单的规则,例如“如果一个人是男性,并且是亲生 child 的直系祖先,则意味着该人是父亲”。在带有 neo4j 的 cypher 中,您将描述您希望匹配的图形模式,从而生成数据,例如:

 MATCH (p:Person)-[:father*]->(maleAncestor:Person)
RETURN maleAncestor

这告诉通过 father 遍历图关系,并返回男性祖先。在逻辑编程语言中,你不会这样做。您可以指定 a成为 b的父亲意味着 a是男性,并且 ab的祖先.这将隐式和传递性地说明对于所有有效的 a/b 配对。那么你会问一个问题,“谁是男性祖先”?然后编程环境将通过利用您的规则来回答这个问题。这将具有通过数据构建遍历的效果,这与我上面指定的密码非常相似,但是您理解数据和构建该遍历的方式完全不同。

逻辑编程语言通常通过 predicate resolution 工作.像 cypher 这样的图形查询语言通过模式匹配和显式路径指定的组合来工作。他们非常不同。

关于neo4j - 图 DB 与 Prolog(或 miniKanren),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com