<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" | |
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"[ | |
<!ENTITY imgroot "images/tools/tools.ruta/" > | |
<!ENTITY % uimaents SYSTEM "../../target/docbook-shared/entities.ent" > | |
%uimaents; | |
]> | |
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor | |
license agreements. See the NOTICE file distributed with this work for additional | |
information regarding copyright ownership. The ASF licenses this file to | |
you under the Apache License, Version 2.0 (the "License"); you may not use | |
this file except in compliance with the License. You may obtain a copy of | |
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required | |
by applicable law or agreed to in writing, software distributed under the | |
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS | |
OF ANY KIND, either express or implied. See the License for the specific | |
language governing permissions and limitations under the License. --> | |
<section id="ugr.tools.ruta.language.declarations"> | |
<title>Declarations</title> | |
<para> | |
There are three different kinds of declarations in the UIMA Ruta system: | |
Declarations of types with optional feature definitions, | |
declarations of variables and declarations for importing | |
external resources, further UIMA Ruta scripts and UIMA components | |
such as type systems and analysis engines. | |
</para> | |
<section id="ugr.tools.ruta.language.declarations.type"> | |
<title>Types</title> | |
<para> | |
Type declarations define new kinds of annotation types and | |
optionally their features. | |
</para> | |
<section> | |
<title> | |
<emphasis role="bold">Example:</emphasis> | |
</title> | |
<para> | |
<programlisting><![CDATA[DECLARE SimpleType1, SimpleType2; // <- two new types with the parent | |
// type "Annotation" | |
DECLARE ParentType NewType (SomeType feature1, INT feature2); | |
// a new type "NewType" with parent type "ParentType" and two features]]></programlisting> | |
</para> | |
<para> | |
Attention: Types with features need a parent type in their | |
declarations. If no special parent type is | |
requested, just use type Annotation as | |
default parent type. | |
</para> | |
</section> | |
</section> | |
<section id="ugr.tools.ruta.language.declarations.variable"> | |
<title>Variables</title> | |
<para> | |
Variable declarations define new variables. There are 12 kinds of | |
variables: | |
<itemizedlist mark='opencircle'> | |
<listitem> | |
<para> | |
Type variable: A variable that represents an annotation | |
type. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Type list variable: A variable that represents a list of | |
annotation | |
types. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Integer variable: A variable that represents an integer. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Integer list variable: A variable that represents a list of | |
integers. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Float variable: A variable that represents a | |
floating-point | |
number. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Float list variable: A variable that represents a list of | |
floating-point numbers in single precision. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Double variable: A variable that represents a | |
floating-point | |
number. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Double list variable: A variable that represents a list | |
of | |
floating-point numbers in double precision. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
String variable: A variable that represents a string. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
String list: A variable that represents a list of strings. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Boolean | |
variable: A variable that represents a boolean. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Boolean list variable: A variable that represents a list of | |
booleans. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Annotation | |
variable: A variable that represents an annotation. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Annotation list variable: A variable that represents a list of | |
annotations. | |
</para> | |
</listitem> | |
</itemizedlist> | |
</para> | |
<section> | |
<title> | |
<emphasis role="bold">Example:</emphasis> | |
</title> | |
<para> | |
<programlisting><![CDATA[TYPE newTypeVariable; | |
TYPELIST newTypeList; | |
INT newIntegerVariable; | |
INTLIST newIntList; | |
FLOAT newFloatVariable; | |
FLOATLIST newFloatList; | |
DOUBLE newDoubleVariable; | |
DOUBLELIST newDoubleList; | |
STRING newStringVariable; | |
STRINGLIST newStringList; | |
BOOLEAN newBooleanVariable; | |
BOOLEANLIST newBooleanList; | |
ANNOTATION newAnnotationVariable; | |
ANNOTATIONLIST newAnnotationList;]]></programlisting> | |
</para> | |
</section> | |
</section> | |
<section id="ugr.tools.ruta.language.declarations.ressource"> | |
<title>Resources</title> | |
<para> | |
There are two kinds of resource declarations that make external | |
resources available in the UIMA Ruta system: | |
<itemizedlist mark='opencircle'> | |
<listitem> | |
<para> | |
List: A list | |
represents a normal text file with an entry per | |
line | |
or a compiled | |
tree of a word list. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Table: A table represents a comma separated | |
file. | |
</para> | |
</listitem> | |
</itemizedlist> | |
</para> | |
<section> | |
<title> | |
<emphasis role="bold">Example:</emphasis> | |
</title> | |
<para> | |
<programlisting><![CDATA[WORDLIST listName = 'someWordList.txt'; | |
WORDTABLE tableName = 'someTable.csv';]]></programlisting> | |
</para> | |
</section> | |
</section> | |
<section id="ugr.tools.ruta.language.declarations.scripts"> | |
<title>Scripts</title> | |
<para> | |
Additional scripts can be imported and reused with the CALL action. | |
The types of the imported rules are also available so that it | |
is not necessary to import the Type System of the additional rule | |
script. | |
</para> | |
<section> | |
<title> | |
<emphasis role="bold">Example:</emphasis> | |
</title> | |
<para> | |
<programlisting><![CDATA[SCRIPT my.package.AnotherScript; // "AnotherScript.ruta" in the | |
//package "my.package" | |
Document{->CALL(AnotherScript)}; // <- rule executes "AnotherScript.ruta"]]></programlisting> | |
</para> | |
</section> | |
</section> | |
<section id="ugr.tools.ruta.language.declarations.components"> | |
<title>Components</title> | |
<para> | |
There are three kinds of UIMA components that can be imported in a | |
UIMA Ruta script: | |
<itemizedlist mark='opencircle'> | |
<listitem> | |
<para> | |
Type System (IMPORT or TYPESYSTEM): includes the types | |
defined in an external type system. You can select which | |
types or packages to import from a type system and how to | |
alias them. If use IMPORT statements, consider enabling | |
<link | |
linkend='ugr.tools.ruta.ae.basic.parameter.strictImports'>strictImports</link>. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Analysis Engine (ENGINE): loads the given descriptor and creates an external analysis | |
engine. The descriptor must be located in the descriptor paths. | |
The type system needed for the analysis engine has | |
to be imported separately. Please mind the filtering setting when | |
calling an external analysis engine. | |
</para> | |
</listitem> | |
<listitem> | |
<para> | |
Analysis Engine (UIMAFIT): loads the given class and creates an external analysis | |
engine. Please mind that the implementation of the analysis engine needs to be available. | |
The type system needed for the analysis engine has | |
to be imported separately. Please mind the filtering setting when | |
calling an external analysis engine. | |
</para> | |
</listitem> | |
</itemizedlist> | |
</para> | |
<section> | |
<title> | |
<emphasis role="bold">Type System Example:</emphasis> | |
</title> | |
<para> | |
<programlisting><![CDATA[// Imports all the types from "ExternalTypeSystem.xml" | |
TYPESYSTEM my.package.ExternalTypeSystem; | |
IMPORT * FROM my.package.ExternalTypeSystem; | |
// Import my.package.SomeType from "ExternalTypeSystem.xml" | |
IMPORT my.package.SomeType FROM my.package.ExternalTypeSystem; | |
// Import my.package.SomeType from the typesystem available to | |
// the CAS at runtime. This can be useful when typesystems are | |
// loaded by uimaFIT | |
IMPORT my.package.SomeType; | |
// Import my.package.SomeType from "ExternalTypeSystem.xml" | |
// and alias it to T1 | |
IMPORT my.package.SomeType FROM my.package.ExternalTypeSystem AS T1; | |
// Import all types in my.package from "ExternalTypeSystem.xml" | |
IMPORT PACKAGE my.package FROM my.package.ExternalTypeSystem; | |
// Import package my.package from "ExternalTypeSystem.xml" | |
// and alias it to p1 (p1.SomeType can now be used) | |
IMPORT PACKAGE my.package FROM my.package.ExternalTypeSystem AS p1; | |
// Import all packages from "ExternalTypeSystem.xml" and alias them to p2 | |
IMPORT PACKAGE * FROM my.package.ExternalTypeSystem AS p2;]]></programlisting> | |
</para> | |
</section> | |
<section> | |
<title> | |
<emphasis role="bold">Analysis Engine Example:</emphasis> | |
</title> | |
<para> | |
<programlisting><![CDATA[ENGINE my.package.ExternalEngine; // <- "ExternalEngine.xml" in the | |
// "my.package" package (in the descriptor folder) | |
UIMAFIT my.implementation.AnotherEngine; | |
Document{->RETAINTYPE(SPACE,BREAK),CALL(ExternalEngine)}; | |
// calls ExternalEngine, but retains white spaces | |
Document{-> EXEC(AnotherEngine, {SomeType})};]]></programlisting> | |
</para> | |
</section> | |
</section> | |
</section> |