用LogicBlox查询键

时间:2016-07-26 19:20:03

标签: logicblox logiql

如果我有两个谓词(不起作用):

addblock 'city(city_dim_id) -> int(city_dim_id).'
addblock 'city_name[city_dim_id] = name -> int(city_dim_id), string(name).'

我可以添加事实:

exec '+city(1).'
exec '+city_name[0] = "N/A".'
exec '+city_name[1] = "Chicago".'

然后是谓词中的事实查询:

query '_(city_name) <- city_name(city_name, _).'
query '_(city_name) <- city_name(_, city_name).'
query '_(city_dim_id, city_name) <- city_name(city_dim_id, city_name).'

我的问题是如何进行查询显示 1.两个表中的city_dim_id是什么, 2.返回city_dim_id和city_name,但仅限于两个表中都存在city_dim_id的位置?

提前致谢。

2 个答案:

答案 0 :(得分:0)

对不起,我很难理解这个问题。 以下内容将返回具有相同city_name的city_dim_id。

from datetime import datetime as dt

t1=dt.now()
f2=open('newfile.txt', 'w')
f1=open('6Gb file.txt', 'r')
for line in f1:
    line=line.split('   ')
    if(line[0]=='freeze'):
        for i in line[:-1]:
            f2.write(i+'    ')
        for i in line[-1:]:       
            f2.write(i)
f1.close()
f2.close()
t2=dt.now()
print(t2-t1)

答案 1 :(得分:0)

  1. 如果通过&#39;两个表格中的city_dim_id&#39;你的意思是'city_dim_id,它们都在两个表格中。那你想要

    _(id) <-city(id), city_name[id] = _.
    
  2. 另一方面,如果你想要任何一个表中的id,你需要通过析取来替换连接。

    _(id) <- city(id); city_name[id] = _.
    
    1. 我想你想要

      _(id,name) <- city(id), city_name[id] = name.
      
    2. 注意:如果使用方括号语法city_name[id] = name,则谓词将起作用