标签: datalog

前向链接与后向链接

另一个人没有在实践中有什么好处呢?我理解他们所做的事情,但他们在实际使用中的局限性和能力是什么?我正在考虑Drools vs一个新的AI项目的java prolog,但对其他建议持开放态度.在复杂的关系数据集或替代方案上进行推理有哪些流行的方法?

artificial-intelligence data-modeling drools prolog datalog

47
推荐指数
3
解决办法
6万
查看次数

Datalog vs CLIPS vs Prolog

和许多程序员一样,我在大学里学过Prolog,但只是很少.我知道Prolog和Datalog密切相关,但Datalog更简单吗?另外,我相信我读到Datalog不依赖于逻辑子句的排序,但我不确定为什么这是优点.据说CLIPS完全不同,但对我来说理解太微妙了.有人可以提供其他语言的一般语言亮点吗?

prolog logic-programming clips datalog

25
推荐指数
2
解决办法
1万
查看次数

如何在Datalog查询中对结果进行排序

我正在使用带有play框架的datomic.游戏很棒,而且数据库很快.总体上是一个很好的组合.因为,我是datomic(和数据目录,即查询语言数据组使用)的新手,我无法对结果进行排序(就像我们一样,在sql中排序).例如.

如果我的查询是:

q= [:find ?title 
:where 
[?e :movie/title ?title]
[?e :movie/director "Dave Swag"]
[?e :movie/year ?year]
[(sort ?year)] //here I am trying to sort by year
]
Run Code Online (Sandbox Code Playgroud)

它应该返回导演为Dave Swag的电影的标题,结果按照发布图像的年份排序.谢谢 :)

datalog datomic

9
推荐指数
1
解决办法
3054
查看次数

如何构造一个完全匹配DataScript中refs向量的查询?

设置考虑以下DataScript数据库的电影和演员,数据从learndatalogtoday.org窃取:以下代码可以在JVM/Clojure REPL或ClojureScript REPL中执行,只要project.clj包含[datascript "0.15.0"]作为依赖项.

(ns user
  (:require [datascript.core :as d]))

(def data 
  [["First Blood" ["Sylvester Stallone" "Brian Dennehy" "Richard Crenna"]]
   ["Terminator 2: Judgment Day" ["Linda Hamilton" "Arnold Schwarzenegger" "Edward Furlong" "Robert Patrick"]]
   ["The Terminator" ["Arnold Schwarzenegger" "Linda Hamilton" "Michael Biehn"]]
   ["Rambo III" ["Richard Crenna" "Sylvester Stallone" "Marc de Jonge"]]
   ["Predator 2" ["Gary Busey" "Danny Glover" "Ruben Blades"]]
   ["Lethal Weapon" ["Gary Busey" "Mel Gibson" "Danny Glover"]]
   ["Lethal Weapon 2" ["Mel Gibson" "Joe Pesci" "Danny …
Run Code Online (Sandbox Code Playgroud)

clojure datalog clojurescript datomic datascript

9
推荐指数
1
解决办法
284
查看次数

可以通过Datomic pull语法获取枚举值吗?

mbrainz示例数据中,:artist/type是枚举.是否可以将枚举的值拉出:db/ident并使用pull语法将其作为:artist/type键的值关联?

这是我能得到的最接近的:

[:find (pull ?e [:artist/name {:artist/type [:db/ident]}])
 :where
 [?e :artist/name "Ray Charles"]
]

;;=> [[{:artist/name "Ray Charles", :artist/type {:db/ident :artist.type/person}}]]
Run Code Online (Sandbox Code Playgroud)

是否可以使用pull语法将结果重塑为类似的内容?

;;=> [[{:artist/name "Ray Charles", :artist/type :artist.type/person}]]
Run Code Online (Sandbox Code Playgroud)

clojure datalog datomic

7
推荐指数
1
解决办法
558
查看次数

数据记录分层

所以我试图理解Datalog是如何工作的,它和Prolog之间的区别之一是它对否定和递归有分层限制.引用维基百科:

如果谓词P是从谓词Q中积极推导出来的(即,P是规则的头部,并且Q在同一规则的正文中是正的),那么P的分层数必须大于或等于分层Q的数量

如果谓词P来自否定谓词Q(即,P是规则的头部,并且Q在同一规则的主体中出现负面),那么P的分层数必须大于Q的分层数. ,

因此,通过这样,下面的两个谓词不会导致分层错误,因为它们可以简单地分配相同的分层数.所以这些谓词很好,尽管有圆形定义.

  1. A(x): - B(x)
  2. B(x): - A(x)

但是如果我们有一个含有一些否定的定义(其中〜是否定),则会发生什么

  1. A(x): - ~B(x)
  2. B(x): - ~A(x)

这里的分层是不可能的.A(x,y)必须具有大于B(x,y)的分层数,并且B(x,y)必须具有大于A(x,y)的分层数.我的第一个想法是,这不是正常的,因为这是一个循环定义,但只要谓词不被否定,分层就可以完成循环.但为什么?真值是简单的二元值.以这种方式处理具有不同符号的公式似乎是极其随意的.在第二种不是第一种情况的情况下,这种分层试图阻止的是什么?

logic prolog datalog

6
推荐指数
1
解决办法
2466
查看次数

用于更改数据的数据记录模式

我正在考虑使用数据记录作为我正在编写的应用程序的数据库后端,因为我认为可以让我轻松地在表示之间切换,而不必牺牲我收集的数据或编写繁琐的迁移.

但是,我无法预见我将如何处理更改数据 - 例如,用户可更改密码这样简单的事情.我有一个想法用日期标记行:

changepassword(<user>, <passhash>, <date>)
Run Code Online (Sandbox Code Playgroud)

然后使用最新的,但似乎没有办法获得最新的,没有返回所有行并在应用程序端过滤它们.

数据记录应用程序如何设计来处理变化的数据?

database database-design datalog

6
推荐指数
1
解决办法
228
查看次数

查找 ref-to-many 属性包含输入的所有元素的实体

假设我有entry具有 ref-to-many 属性的实体:entry/groups。我应该如何构建查询以查找其:entry/groups属性包含所有输入外部 ID 的实体?

下一个伪代码将更好地说明我的问题:

[2 3] ; having this as input foreign ids

;; and having these entry entities in db
[{:entry/id "A" :entry/groups  [2 3 4]}  
 {:entry/id "B" :entry/groups  [2]}     
 {:entry/id "C" :entry/groups  [2 3]}  
 {:entry/id "D" :entry/groups  [1 2 3]}
 {:entry/id "E" :entry/groups  [2 4]}] 

;; only A, C, D should be pulled
Run Code Online (Sandbox Code Playgroud)

作为 Datomic/Datalog 的新手,我用尽了所有选项,因此感谢您提供任何帮助。谢谢!

clojure datalog datomic

6
推荐指数
1
解决办法
719
查看次数

使用计时器逐行读取文本文件

StreamReader sr = new StreamReader("C:/CR EZ Test/Log.txt");    //use with IF
private void timer2_Tick(object sender, EventArgs e)
{
    if ((line = sr.ReadLine()) != null)
    {   
        //FileStream fs = File.Open("C:/CR EZ Test/Log.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        //StreamReader sr = new StreamReader(fs); //use with While can't use with }else{
        //while ((line = sr.ReadLine()) != null) 
        //{
        string[] dataLog = line.Split(new[] { ',' }, StringSplitOptions.None);
        mpa = (dataLog[1]);
        ml  = (dataLog[2]);
        lph = (dataLog[3]);
        elapsedTime = float.Parse(dataLog[4]) / 1000;

        if (testStatus > 0) time = …
Run Code Online (Sandbox Code Playgroud)

c# streamreader datalog

6
推荐指数
1
解决办法
388
查看次数

数据记录计算类?

Datalog不是图灵完备的。

但它的计算类是什么?

它相当于有限状态机下推机(即上下文无关)……还是介于两者之间?

turing-machines turing-complete computation-theory automaton datalog

5
推荐指数
1
解决办法
106
查看次数