如何向现有RUTA项目添加自定义条件?开始了,但我被卡住了

时间:2014-02-27 00:30:26

标签: uima ruta

我想添加自定义UIMA RUTA规则条件。我在Eclipse中有一个现有的UIMA Ruta项目。到目前为止,我使用基本的注释器存根在同一个项目中创建了一个源文件:

package mynamespace.extensions;

[imports]

public class MyNewCondition extends AbstractRutaCondition {

private final String para1;

public MyNewCondition(String para1) {
    super();
    this.para1 = para1;
}

@Override
public EvaluatedCondition eval(AnnotationFS annotation,
        RuleElement element, RutaStream stream, InferenceCrowd crowd) {
    // TODO Auto-generated method stub
    if (para1 == "hfoo")
        return new EvaluatedCondition(this, true);
    else 
        return new EvaluatedCondition(this, false);
}

public String getPara() {
    return para1;
}
}

文件编译到target / classes / ...文件夹,但是当我创建RUTA脚本时:

DECLARE Test;
SW{MyNewCondition("foo") -> MARK(Test)};

... Eclipse告诉我“MyNewCondition”没有定义,当我运行它时,我得到:“第40行出错”(“:在控制台上找不到可行的选择”。我认为我需要做一些进一步导入,但不知道如何。我试图在Github存储库中的Extension示例项目中工作,但我不知道从哪里开始,因为脚本文件不包含任何进一步的导入,但关联的xml描述符文件做但是当这些自动生成时,我不知道这是我应该改变的还是其他的东西。

我也尝试通过Eclipse的构建路径选项从第二个项目导入相同的新条件类型,但也没有运气。

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:2)

您需要至少三个类来添加也在UIMA Ruta Workbench中解决的新条件:

  1. 您在问题中执行的条件
  2. IRutaConditionExtension的实现,它为引擎提供条件实现
  3. IIDEConditionExtension的实现,为UIMA Ruta Workench提供条件
  4. 条件本身仅包含应添加到语言中的功能。分析引擎当然知道任何外部实现都没有导致奇怪的解析异常,例如“(”未找到。有时应该改进。分析引擎提供配置参数additionalExtensions,列出语言的所有已知扩展如果你没有使用UIMA Ruta Workbench,你需要在这个参数中添加你的IRutaConditionExtension实现.IIDEConditionExtension的实现为UIMA Ruta Workbench提供了必要的功能,即语法检查,语法高亮等等。它使Workbench能够生成正确的描述符。它将你的IRutaConditionExtension实现添加到相应的参数。当然,Workbench的这个扩展需要在安装在你的UIMA Ruta Workbench Eclipse实例中的Eclipse插件中实现,以便可以在Workbench中找到。有一个扩展点,您需要扩展它才能同时了解您执行IRutaConditionExtension和IIDEConditionExtension。

    有一个示例项目提供了所有可能的语言元素的实现。该项目包含分析引擎的实现以及UIMA Ruta Workbench的实现,因此是Eclipse插件(请注意pom文件)。

    关于ExampleCondition条件扩展,有三个重要的点/类:

    1. ExampleCondition.java提供新条件的实现,用于评估日期
    2. ExampleConditionExtension.java提供分析引擎的扩展。它知道条件的名称,它的实现,可以创建该条件的新实例,并且能够描述解释组件的条件。
    3. ExampleConditionIDEExtension提供编辑器的语法检查和语法着色的关键字。
    4. plugin.xml定义Workbench的扩展名:

      <extension point="org.apache.uima.ruta.ide.conditionExtension">
        <condition
          class="org.apache.uima.ruta.example.extensions.ExampleConditionIDEExtension"
          engine="org.apache.uima.ruta.example.extensions.ExampleConditionExtension">
        </condition>
      </extension>
      
    5. 如果您不使用UIMA Ruta Workbench或只想在UIMA管道中应用规则,则只需要ExampleConditionExampleConditionExtension,并且需要将org.apache.uima.ruta.example.extensions.ExampleConditionExtension添加到您的UIMA Ruta分析引擎(描述符)的additionalExtensions参数。

      在同一个工作区中使用Java项目添加新条件尚未经过测试,但至少由于使用Eclipse的扩展点机制包含扩展而缺少Workbench支持。