Drools,图形遍历,查询以查找根节点

时间:2014-06-17 23:01:11

标签: graph drools traversal

我有一个Java端类,其基本行为如下:

declare Datum
    description: String
    broader: List <Datum>
    narrower: List <Datum>
end

我想写

query rootDatumsFor(Datum datum)

提供了一个根基准列表 - 也就是说,“更新”更广泛的属性,并返回一个包含空的更宽列表的每个数据的列表。

我对如何写这个感到非常困惑 - 主要是因为所涉及的否定。

我想我想要像

这样的东西
query rootDatumsFor( Datum datum )
    not Datum() from $datum.broader
    or
    rootDatumsFor( $datum.broader )
end

但我对这两个部分感到困惑。如果没有更广泛的术语,应该检测到,我如何“返回”$ datum的当前值?我觉得每个部分都需要一个$ result,我想做一个 $ result:$ datum ,但这是无效的。

而且我不确定如何进行递归。我应该有rootDatumsFor(datum,result)并通过绑定来完成吗?

我见过像 Datum(这= = $ datum)这样的例子,但是当我尝试它时似乎没有被接受。

任何帮助,虽然我不断阅读docn以找到一些线索如何继续,但我将不胜感激。

1 个答案:

答案 0 :(得分:0)

要使用空broader列表查找所有Datum事实,您只需

query rootDatumsFor( Datum $datum )
    $datum: Datum( broader.size() == 0 )
end