Hi, you're welcome :-)
Yes, the class is not generated automatically when the project is imported. I usually call "maven->update project" which cleans and builds the project and helps Eclipse to update the source folders. Best, Peter Am 13.11.2015 um 15:18 schrieb Olivier Austina: > 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 > <http://philip.yurchuk.com/software/eclipse-cannot-be-resolved-to-a-type-error/> > 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 <[email protected]>: > >> 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 : >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier"> >>> <name>tutorial.entity.DateTypeSystem</name> >>> <imports> >>> <import location="../../BasicTypeSystem.xml"/> >>> </imports> >>> <types> >>> <typeDescription> >>> <name>tutorial.entity.Date.Month</name> >>> <description>Type defined in >> tutorial.entity.Date</description> >>> <supertypeName>uima.tcas.Annotation</supertypeName> >>> </typeDescription> >>> <typeDescription> >>> <name>tutorial.entity.Date.Year</name> >>> <description>Type defined in >> tutorial.entity.Date</description> >>> <supertypeName>uima.tcas.Annotation</supertypeName> >>> </typeDescription> >>> <typeDescription> >>> <name>tutorial.entity.Date.Date</name> >>> <description>Type defined in >> tutorial.entity.Date</description> >>> <supertypeName>uima.tcas.Annotation</supertypeName> >>> </typeDescription> >>> </types> >>> </typeSystemDescription> >>> >>> - 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: >>> >>> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" >>> http://www.w3.org/2001/XMLSchema-instance" >>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 >>> http://maven.apache.org/xsd/maven-4.0.0.xsd"> >>> <modelVersion>4.0.0</modelVersion> >>> >>> <groupId>tuto</groupId> >>> <artifactId>tuto-step0</artifactId> >>> <version>0.0.1-SNAPSHOT</version> >>> <packaging>jar</packaging> >>> >>> <name>tuto-step0</name> >>> <url>http://maven.apache.org</url> >>> >>> <properties> >>> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> >>> </properties> >>> >>> <dependencies> >>> <dependency> >>> <groupId>org.apache.uima</groupId> >>> <artifactId>ruta-core</artifactId> >>> <version>2.3.1</version> >>> </dependency> >>> >>> <dependency> >>> <groupId>org.apache.uima</groupId> >>> <artifactId>uimafit-core</artifactId> >>> <version>2.1.0</version> >>> </dependency> >>> <dependency> >>> <groupId>junit</groupId> >>> <artifactId>junit</artifactId> >>> <version>3.8.1</version> >>> <scope>test</scope> >>> </dependency> >>> </dependencies> >>> </project> >>> >>> 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<AnnotationFS> 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 <[email protected]>: >>> >>>> 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: >>>>> >>>>> <dependency> >>>>> <groupId>org.apache.uima</groupId> >>>>> <artifactId>ruta-core</artifactId> >>>>> <version>2.3.1</version> >>>>> </dependency> >>>>> >>>>> <dependency> >>>>> <groupId>org.apache.uima</groupId> >>>>> <artifactId>uimafit-core</artifactId> >>>>> <version>2.1.0</version> >>>>> </dependency> >>>>> >>>>> >>>>> 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<T>) of >> type >>>>> JCasUtil is not applicable for the arguments (JCas, Class<Month>). The >>>>> inferred type Month is not a valid substitute for the bounded parameter >>>> <T >>>>> 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 >>>>> >>
