我只想在这个术语背后的术语与我相关的情况下匹配一些术语。所以我创建了一个最小的例子:
这是我的测试数据:
small Large
Large
small
我想标记小型和大型,但不是“小型”。
所以我想,这样的事情应该有效:
DECLARE Test;
(SW*? CW) {-> CREATE(Test)};
但RUTA仅匹配“小型大”。
对于测试我已经用“W”替换了“SW”,它将做我想做的事。
答案 0 :(得分:0)
不幸的是,如果规则开始与第一个规则元素匹配,则规则开头的可选量词不是可选的。这意味着您需要两个规则,或者您需要更改规则元素匹配的顺序。
更改规则元素匹配的顺序导致不同的规则匹配,因为并非所有SW
的增量序列都在CW
之前考虑。然而,这通常是人们通常喜欢的东西。该规则看起来像:
(SW* @CW) {-> CREATE(Test)};
两种规则方法看起来像:
(SW+? CW) {-> CREATE(Test)};
CW {-> CREATE(Test)};
如果由于额外的计算而没有必要,我建议避免使用不情愿的量词。而是使用PARTOF条件,即使它看起来不太好。
免责声明:Iam是UIMA Ruta的开发者