[ 
https://issues.apache.org/jira/browse/UIMA-4480?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14633716#comment-14633716
 ] 

Min Jiang commented on UIMA-4480:
---------------------------------

As you suggested, I am trying using only the defaultEngine.xml.
The code is like:
ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
                
                
                URL aedesc = new File(descriptorPath 
+File.separator+"descriptor"+File.separator+"defaultEngine.xml").toURL();
                        XMLInputSource inae = new XMLInputSource(aedesc);
                        ResourceSpecifier specifier = 
UIMAFramework.getXMLParser().parseResourceSpecifier(inae);                
                        AnalysisEngineDescription aed = 
(AnalysisEngineDescription) specifier;
                       aed.resolveImports(resMgr);
                       AnalysisEngine ae = 
UIMAFramework.produceAnalysisEngine(aed, resMgr, null);
                      File scriptFile = new File(ruleFile);
                     ae.setConfigParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, 
                    new String[] { scriptFile.getParentFile().getAbsolutePath() 
});
                String name = scriptFile.getName().substring(0, 
                    scriptFile.getName().length() - 5);
                ae.setConfigParameterValue(RutaEngine.PARAM_MAIN_SCRIPT, name);
                ae.reconfigure();
                
                ae.process(aJCas);

I got the error:
org.apache.uima.resource.ResourceInitializationException: Initialization of 
annotator class "org.apache.uima.ruta.engine.RutaEngine" failed.  (Descriptor: 
file:/Users/mjiang/Documents/runtime-ClampGUI.product/new/descriptor/defaultEngine.xml)
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:265)
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initialize(PrimitiveAnalysisEngine_impl.java:170)
        at 
org.apache.uima.impl.AnalysisEngineFactory_impl.produceResource(AnalysisEngineFactory_impl.java:94)
        at 
org.apache.uima.impl.CompositeResourceFactory_impl.produceResource(CompositeResourceFactory_impl.java:62)
        at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:279)
        at org.apache.uima.UIMAFramework.produceResource(UIMAFramework.java:331)
        at 
org.apache.uima.UIMAFramework.produceAnalysisEngine(UIMAFramework.java:448)
        at 
edu.uth.ccb.clinicalnlp.processor.ner.RutaRulebasedMedicalNameEntityRecognizer.process(RutaRulebasedMedicalNameEntityRecognizer.java:263)
        at edu.uth.ccb.clamp.job.RunPipelineJob.run(RunPipelineJob.java:103)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.apache.uima.resource.ResourceInitializationException
        at 
org.apache.uima.ruta.engine.RutaEngine.initialize(RutaEngine.java:468)
        at 
org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.initializeAnalysisComponent(PrimitiveAnalysisEngine_impl.java:263)
        ... 9 more
Caused by: org.apache.uima.analysis_engine.AnalysisEngineProcessException
        at 
org.apache.uima.ruta.engine.RutaEngine.initializeScript(RutaEngine.java:675)
        at 
org.apache.uima.ruta.engine.RutaEngine.initialize(RutaEngine.java:466)
        ... 10 more
Caused by: java.io.FileNotFoundException: Script [default] cannot be found at 
[{}] or classpath with extension .ruta
        ... 12 more

"defaultEngine.xml" include the BasicEngine.xml and the new type created by 
script, which is like:

 <typeSystemDescription>
            <imports>
                <import location="defaultTypeSystem.xml"/>
            </imports>
        </typeSystemDescription>
        <typePriorities>
            <priorityList>
                <type>org.apache.uima.ruta.type.RutaFrame</type>
                <type>uima.tcas.Annotation</type>
                <type>org.apache.uima.ruta.type.RutaBasic</type>
            </priorityList>
        </typePriorities>
        <fsIndexCollection/>
        <capabilities>
            <capability>
                <inputs/>
                <outputs/>
                <languagesSupported/>
            </capability>
            <capability>
                <inputs>
                    <type>default.PERSON</type>
                </inputs>
                <outputs>
                    <type>default.PERSON</type>
                </outputs>
                <languagesSupported/>
            </capability>
        </capabilities>
        <operationalProperties>
            <modifiesCas>true</modifiesCas>
            <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
            <outputsNewCASes>true</outputsNewCASes>
        </operationalProperties>
    </analysisEngineMetaData>
    <resourceManagerConfiguration/>

> Cannot declar new type in Java code to apply Ruta rules
> -------------------------------------------------------
>
>                 Key: UIMA-4480
>                 URL: https://issues.apache.org/jira/browse/UIMA-4480
>             Project: UIMA
>          Issue Type: Bug
>          Components: ruta
>    Affects Versions: 2.2.1ruta
>            Reporter: Min Jiang
>            Assignee: Peter Klügl
>             Fix For: 2.3.1ruta
>
>
> I used Java code to apply UIMA Ruta rules, but with declare statement, ruta 
> cannot recognize the new created annotation type.
> Here is the code I used:
> String rutaStr2 = "DECLARE person; W{REGEXP(\"Patient\") -> MARK(person)};";
> Ruta.apply( aJCas.getCas(), rutaStr2 );
> The error is like:
> Jun 24, 2015 3:01:07 PM 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl 
> callAnalysisComponentProcess(417)
> SEVERE: Exception occurred
> org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator 
> processing failed.    
>       at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:496)
>       at 
> org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
>       at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:385)
>       at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:309)
>       at 
> org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
>       at org.apache.uima.ruta.engine.Ruta.apply(Ruta.java:75)
>       at org.apache.uima.ruta.engine.Ruta.apply(Ruta.java:83)
>       at 
> edu.uth.clamp.nlp.attr.ast.LinearAssertion.main(LinearAssertion.java:610)
> Caused by: java.lang.IllegalArgumentException: Not able to resolve type: 
> animal
>       at 
> org.apache.uima.ruta.expression.type.SimpleTypeExpression.getType(SimpleTypeExpression.java:47)
>       at 
> org.apache.uima.ruta.action.AbstractMarkAction.createAnnotation(AbstractMarkAction.java:42)
>       at org.apache.uima.ruta.action.MarkAction.execute(MarkAction.java:57)
>       at 
> org.apache.uima.ruta.rule.AbstractRuleElement.apply(AbstractRuleElement.java:130)
>       at 
> org.apache.uima.ruta.rule.RuleElementCaretaker.applyRuleElements(RuleElementCaretaker.java:111)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.applyRuleElements(ComposedRuleElement.java:559)
>       at 
> org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:480)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:384)
>       at 
> org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:106)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:73)
>       at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:47)
>       at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:40)
>       at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:29)
>       at org.apache.uima.ruta.RutaScriptBlock.apply(RutaScriptBlock.java:63)
>       at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:48)
>       at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:494)
>       ... 7 more
> org.apache.uima.analysis_engine.AnalysisEngineProcessException: Annotator 
> processing failed.    
>       at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:496)
>       at 
> org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
>       at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:385)
>       at 
> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:309)
>       at 
> org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
>       at org.apache.uima.ruta.engine.Ruta.apply(Ruta.java:75)
>       at org.apache.uima.ruta.engine.Ruta.apply(Ruta.java:83)
>       at 
> edu.uth.clamp.nlp.attr.ast.LinearAssertion.main(LinearAssertion.java:610)
> Caused by: java.lang.IllegalArgumentException: Not able to resolve type: 
> animal
>       at 
> org.apache.uima.ruta.expression.type.SimpleTypeExpression.getType(SimpleTypeExpression.java:47)
>       at 
> org.apache.uima.ruta.action.AbstractMarkAction.createAnnotation(AbstractMarkAction.java:42)
>       at org.apache.uima.ruta.action.MarkAction.execute(MarkAction.java:57)
>       at 
> org.apache.uima.ruta.rule.AbstractRuleElement.apply(AbstractRuleElement.java:130)
>       at 
> org.apache.uima.ruta.rule.RuleElementCaretaker.applyRuleElements(RuleElementCaretaker.java:111)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.applyRuleElements(ComposedRuleElement.java:559)
>       at 
> org.apache.uima.ruta.rule.AbstractRuleElement.doneMatching(AbstractRuleElement.java:84)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.fallback(ComposedRuleElement.java:480)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.fallbackContinue(ComposedRuleElement.java:384)
>       at 
> org.apache.uima.ruta.rule.RutaRuleElement.startMatch(RutaRuleElement.java:106)
>       at 
> org.apache.uima.ruta.rule.ComposedRuleElement.startMatch(ComposedRuleElement.java:73)
>       at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:47)
>       at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:40)
>       at org.apache.uima.ruta.rule.RutaRule.apply(RutaRule.java:29)
>       at org.apache.uima.ruta.RutaScriptBlock.apply(RutaScriptBlock.java:63)
>       at org.apache.uima.ruta.RutaModule.apply(RutaModule.java:48)
>       at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:494)
>       ... 7 more



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to