blob: 4b6a5d1a99e9608633776feef47aabd80d822e34 [file] [log] [blame]
<?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>