datomic连接查询执行和元数据

时间:2016-11-10 06:46:38

标签: datomic

在java(通过JDBC驱动程序)中,当我执行T1(a,b)和T2(x,y)的sql连接查询时,我得到一个包含连接记录J(a,b,x,y)的输出。除此之外,我还得到元数据,告诉我在连接记录J字段中,“a”和“b”来自表T1,字段“x”和“y”来自表T2。

我的问题是,当我在java中运行datomic join查询时,我是否也会获得这种元数据信息,告诉我连接记录中的哪个字段属于哪个输入表?

1 个答案:

答案 0 :(得分:0)

Datomic没有表格。它就像一个三重商店。内置时间轴。

三元组是实体属性值。因此,您可以在输出中包含匹配的实体,以及属性和值。

例如,在您的数据库中是三元组:

[joe :likes :pizza]
[joe :favorite-color :gray]
[joe :name "joe"]
[jane :likes :pizza]
[jane :favorite-color :blue]
[jane :name "jane"]

joe和jane是实体(具有唯一标识符且附加属性的东西):: likes,:name和:favorite-color是属性和:pizza,:gray和:blue是值。

查询谁喜欢披萨,还有喜欢的颜色灰色

(d/q '[:find ?person
       :where
       [?person :likes :pizza]
       [?person :favorite-color :gray]]
       db)

此处的结果将是实体列表,在本例中为joe。从该实体,您可以导航到其所有属性(名称,喜欢等)。此查询中没有太多意义,但您可以返回任何变量,可以是实体属性或值。

我会在这里停下来,因为Datomic有很棒的教程以及官方文档。