Comment puis-je ajouter une condition personnalisée à un RUTA projet?Commencé, mais je suis coincé

StackOverflow https://stackoverflow.com//questions/22056617

  •  22-12-2019
  •  | 
  •  

Question

Je veux ajouter un UIMA RUTA condition de la règle.J'ai déjà un UIMA Ruta projet dans Eclipse.Jusqu'à présent, j'ai créé un fichier source dans le même projet avec une base annotateur de stub:

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;
}
}

Le fichier compile à la cible/classes/...dossier, mais quand je créer un RUTA script:

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

...Eclipse me dit que "MyNewCondition" n'est pas défini, et quand je le lance j'obtiens:"Erreur à la ligne 40, "(":pas trouvé de solution de rechange viable" sur la console.Je suppose que j'ai besoin de faire plus de l'importation, mais ne savez pas comment.J'ai essayé de travailler à partir de l'Extension exemple de projet dans le dépôt Github, mais je ne sais pas par où commencer, il y a que le fichier script ne contient pas la poursuite des importations, mais le xml descripteur de fichiers ne.Mais comme ces générés automatiquement, je ne sais pas si c'est ce que je devrais changer ou c'est autre chose.

J'ai aussi essayé d'importer à nouveau le même type de condition à partir d'un deuxième projet via Eclipse chemin de compilation options, mais pas de chance il soit.

Quelqu'un peut-il aider?Merci.

Était-ce utile?

La solution

Vous avez besoin d'au moins trois classes pour l'ajout d'une nouvelle condition qui est également résolu dans le UIMA Ruta Workbench:

  1. Une mise en œuvre de la condition comme vous l'avez fait dans votre question
  2. Une mise en œuvre de IRutaConditionExtension, qui fournit l'état de mise en œuvre pour le moteur
  3. Une mise en œuvre de IIDEConditionExtension, qui fournit la condition de la UIMA Ruta Workench

La condition elle-même contient uniquement les fonctionnalités qui devraient être ajoutés à la langue.Le moteur d'analyse sait évidemment rien à propos de tout externe implémentations résultant en une étrange analyser exception comme "(" pas trouvé.Qui devrait être amélioré parfois.Le moteur d'analyse fournit un paramètre de configuration additionalExtensions qui répertorie toutes les extensions connues de la langue.Si vous n'êtes pas à l'aide de la UIMA Ruta Workbench, vous devez ajouter votre mise en œuvre de IRutaConditionExtension à ce paramètre.La mise en oeuvre de IIDEConditionExtension fournit les fonctionnalités nécessaires pour la UIMA Ruta Workbench qui est de la vérification de la syntaxe, de la syntaxe et ainsi de suite.En outre, il permet à l'établi pour générer de corriger les descripteurs.Il ajoute votre mise en œuvre de IRutaConditionExtension pour le paramètre correspondant.Cette extension de l'atelier doit évidemment être mis en œuvre dans un plugin Eclipse qui est installé dans votre UIMA Ruta Workbench Eclipse exemple, afin d'être disponible dans le Workbench.Il y a un point d'extension, dont vous avez besoin pour étendre de qui sait à la fois votre mise en œuvre de IRutaConditionExtension et IIDEConditionExtension.

Il y a un projet exemplaire qui prévoit la mise en œuvre de l'ensemble des éléments de la langue.Ce projet contient l'implémentation pour le moteur d'analyse et également la mise en œuvre de la UIMA Ruta Workbench, et est donc un plugin Eclipse (l'esprit de la pom fichier).

Concernant la ExampleCondition condition de l'extension, il y a trois lieux importants/classes:

  1. ExampleCondition.java fournit la mise en œuvre de la nouvelle condition, qui évalue les dates
  2. ExampleConditionExtension.java fournit de l'extension pour le moteur d'analyse.Il connaît le nom de l'état, de sa mise en œuvre, peuvent créer de nouvelles instances de cette condition, et est en mesure de verbaliser la condition pour l'explication des composants.
  3. ExampleConditionIDEExtension fournit la vérification de la syntaxe pour l'éditeur et le mot clé pour la coloration de la syntaxe.
  4. plugin.xml définit l'extension de l'atelier:

    <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>
    

Si vous n'utilisez pas le UIMA Ruta Workbench ou ne voulez appliquer les règles en UIMA pipelines, vous avez seulement besoin de ExampleCondition et ExampleConditionExtension, et vous devez l'ajouter org.apache.uima.ruta.example.extensions.ExampleConditionExtension à l' additionalExtensions paramètre de votre UIMA Ruta moteur d'analyse (descripteur).

L'ajout de nouvelles conditions à l'aide de projets Java dans le même espace de travail n'a pas encore été testé, mais au moins le Workbench de soutien sera absent en raison de l'inclusion des extensions à l'aide de l'extension du mécanisme de point d'Eclipse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top