Hi Peter, Thank for your help it works very very well now. The first time I import your project, it indicates an error for import tutorial.entity.Date.Date statement. I fixed it following this post here if it can help someone also. These 4 instructions : *Clean, refresh, build, restart.* Thank you again. Regards Olivier 2015-11-13 14:01 GMT+01:00 Peter Klügl : > Hi, > > I assume that there are several problems, e.g., the missing JCas cover > classes. > > I have taken the liberty to create a project based on your example like > I would use ruta right now (with 2.3.1): > http://people.apache.org/~pkluegl/examples/date-example.zip > > - the script file are in src/main/ruta > - the wordlist file is in src/main/resources > - the descriptors are generated to target/generated-sources/ruta > - the JCas cover classes are generated to target/generated-sources/jcasgen > - src/test/java contains two JUnit tests: one based on the generated > descriptor and one based on uimaFIT without ae descriptor > > Let me know if this helps and/or you have questions about the project > setup. > > Best, > > Peter > > Am 12.11.2015 um 17:04 schrieb Olivier Austina: > > Hi Peter, > > > > > > Thank you for you reply. To answer to your questions: > > > > > > - who created DateTypeSystem.xml? Was it the ruta-maven-plugin or the > > build process of the Ruta Workbench? Did you move the type system > > descriptor, e.g., making the import in the AE descriptor invalid? > > > > DateTypeSystem.xml is created by the Ruta Workbench. I have created the > > project with Ruta Workbench and then try to use it in java program with > > maven. This is the DateTypeSystem.xml file content : > > > > > > > > tutorial.entity.DateTypeSystem > > > > > > > > > > > > tutorial.entity.Date.Month > > Type defined in > tutorial.entity.Date > > uima.tcas.Annotation > > > > > > tutorial.entity.Date.Year > > Type defined in > tutorial.entity.Date > > uima.tcas.Annotation > > > > > > tutorial.entity.Date.Date > > Type defined in > tutorial.entity.Date > > uima.tcas.Annotation > > > > > > > > > > - did you include the jcasgen-maven-plugin in your pom? Or did you use > > the Component Descriptor Editor to create JCas cover classes. > > > > No I didn't use it. I have only create a simple maven project with > eclipse > > and try to call UIMA Ruta with uimaFIT. > > > > - the error messages indicate that the type system import of your > > analysis engine has some problems and that the Month type is not > > resolved. Furthermore,tThe Month class (JCas cover class for the type) > > is missing. Either there was already a class or JCasGen was not executed. > > > > Can you provide the complete pom and a short description of the layout > > of your project? > > > > This is the pom: > > > > > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > > http://maven.apache.org/xsd/maven-4.0.0.xsd"> > > 4.0.0 > > > > tuto > > tuto-step0 > > 0.0.1-SNAPSHOT > > jar > > > > tuto-step0 > > http://maven.apache.org > > > > > > UTF-8 > > > > > > > > > > org.apache.uima > > ruta-core > > 2.3.1 > > > > > > > > org.apache.uima > > uimafit-core > > 2.1.0 > > > > > > junit > > junit > > 3.8.1 > > test > > > > > > > > > > This is java code with imports: > > > > package tuto.tuto_step0; > > > > import java.io.File; > > import java.io.IOException; > > > > import org.apache.uima.UIMAFramework; > > import org.apache.uima.analysis_engine.AnalysisEngine; > > import org.apache.uima.analysis_engine.AnalysisEngineProcessException; > > import org.apache.uima.cas.CAS; > > import org.apache.uima.cas.CASException; > > import org.apache.uima.cas.text.AnnotationFS; > > import org.apache.uima.cas.text.AnnotationIndex; > > import org.apache.uima.fit.util.ContainmentIndex.Type; > > import org.apache.uima.fit.util.JCasUtil; > > import org.apache.uima.jcas.JCas; > > import org.apache.uima.resource.ResourceInitializationException; > > import org.apache.uima.resource.ResourceSpecifier; > > import org.apache.uima.util.InvalidXMLException; > > import org.apache.uima.util.XMLInputSource; > > > > > > > > public class App > > { > > public static void main( String[] args ) throws IOException, > > InvalidXMLException, ResourceInitializationException, > > AnalysisEngineProcessException, CASException > > { > > //System.out.println( "Hello World!" ); > > File specFile = new > > > File("/home/olhome/software/workspace/rutatest1/dateproject/descriptor/tutorial/entity/DateEngine.xml"); > > XMLInputSource in = new XMLInputSource(specFile); > > ResourceSpecifier specifier = UIMAFramework.getXMLParser(). > > parseResourceSpecifier(in); > > // for import by name... set the datapath in the > ResourceManager > > AnalysisEngine ae = > > UIMAFramework.produceAnalysisEngine(specifier); > > CAS cas = ae.newCAS(); > > cas.setDocumentText("This is my document. March June > > December"); > > ae.process(cas); > > // For plain UIMA > > /* > > org.apache.uima.cas.Type monthType = > > cas.getTypeSystem().getType("tutorial.entity.Date.Month"); > > AnnotationIndex annotationIndex = > > cas.getAnnotationIndex(monthType); > > for (AnnotationFS each : annotationIndex) { > > System.out.println(each.getCoveredText()); > > } > > */ > > > > JCas jcas = cas.getJCas(); > > for (Month month : JCasUtil.select(jcas, Month.class)) { > > System.out.println(month.getCoveredText()); > > } > > > > > > } > > } > > > > Thank you. > > > > Regards > > Olivier > > > > > > 2015-11-12 14:35 GMT+01:00 Peter Klügl : > > > >> Hi, > >> > >> here a few fast comments and questions: > >> - the example code uses uimaFIT only for the select, but not for the > >> creation/initialization of the components/CAS. Thus, > >> org.apache.uima.fit/types.txt won't help much. However, the types should > >> be included by the import in the AE. > >> - who created DateTypeSystem.xml? Was it the ruta-maven-plugin or the > >> build process of the Ruta Workbench? Did you move the type system > >> descriptor, e.g., making the import in the AE descriptor invalid? > >> - did you include the jcasgen-maven-plugin in your pom? Or did you use > >> the Component Descriptor Editor to create JCas cover classes. > >> - the error messages indicate that the type system import of your > >> analysis engine has some problems and that the Month type is not > >> resolved. Furthermore,tThe Month class (JCas cover class for the type) > >> is missing. Either there was already a class or JCasGen was not > executed. > >> > >> Can you provide the complete pom and a short description of the layout > >> of your project? > >> > >> Best, > >> > >> Peter > >> > >> PS: a uimaFIT like approach for creating a Ruta engine could look like > >> (whereas direct initialization of AE should be avoided in general): > >> AnalysisEngine ae = createEngine(RutaEngine.class, > >> RutaEngine.PARAM_MAIN_SCRIPT, > >> "org.apache.uima.ruta.engine.UimafitTest", > >> RutaEngine.PARAM_SCRIPT_PATHS, new String[] { > >> "src/test/resources" }); > >> > >> > >> Am 12.11.2015 um 14:12 schrieb Olivier Austina: > >>> Hi, > >>> > >>> I try to call a simple UIMA ruta script from uimaFIT in java. It works > in > >>> plain UIMA but it didn't work in uimaFIT for me. Here is the script: > >>> > >>> PACKAGE tutorial.entity; > >>> WORDLIST MonthsList = 'month.txt'; > >>> DECLARE Month; > >>> DECLARE Year; > >>> DECLARE Date; > >>> Document{-> MARKFAST(Month, MonthsList )}; > >>> NUM{REGEXP("19..|20..") -> MARK(Year,1,2)}; > >>> Month Year {-> MARK(Date,1,2)}; > >>> > >>> Here is the java code (based on Ruta doc example): > >>> > >>> //System.out.println( "Hello World!" ); > >>> File specFile = new > >>> > >> > File("/home/olhome/software/workspace/rutatest1/dateproject/descriptor/tutorial/entity/DateEngine.xml"); > >>> XMLInputSource in = new XMLInputSource(specFile); > >>> ResourceSpecifier specifier = UIMAFramework.getXMLParser(). > >>> parseResourceSpecifier(in); > >>> // for import by name... set the datapath in the > >> ResourceManager > >>> AnalysisEngine ae = > >>> UIMAFramework.produceAnalysisEngine(specifier); > >>> CAS cas = ae.newCAS(); > >>> cas.setDocumentText("This is my document. March June > >>> December"); > >>> ae.process(cas); > >>> > >>> JCas jcas = cas.getJCas(); > >>> for (Month month : JCasUtil.select(jcas, Month.class)) { > >>> System.out.println(month.getCoveredText()); > >>> } > >>> > >>> This is the pom dependencies: > >>> > >>> > >>> org.apache.uima > >>> ruta-core > >>> 2.3.1 > >>> > >>> > >>> > >>> org.apache.uima > >>> uimafit-core > >>> 2.1.0 > >>> > >>> > >>> > >>> I have the following error: > >>> > >>> Exception in thread "main" java.lang.Error: Unresolved compilation > >>> problems: > >>> Month cannot be resolved to a type > >>> Bound mismatch: The generic method select(FSArray, Class) of > type > >>> JCasUtil is not applicable for the arguments (JCas, Class). The > >>> inferred type Month is not a valid substitute for the bounded parameter > >> >>> extends TOP> > >>> Month cannot be resolved to a type > >>> at tuto.tuto_step0.App.main(App.java:51) > >>> > >>> > >>> It seems that I am not able to correctly import types like in the maven > >>> example. I am not so familiar with maven. I have put the > >> DateTypeSystem.xml > >>> in a folder called tuto under src folder and add the line > >>> "classpath*:/tuto/DateTypeSystem.xml" in the text file > >>> src/META-INF/org.apache.uima.fit/types.txt. > >>> > >>> Any suggestion is welcome. Thank you. > >>> > >>> Regards > >>> Olivier > >>> > >> > >