blob: 2a9b378fea1a51a58f47d9e694b34ca46da5bc9a [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!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.
-->
<glossary id="ugr.glossary">
<title>Glossary: Key Terms &amp; Concepts</title>
<titleabbrev>Glossary</titleabbrev>
<!--
<para></para>
<glossary id="ugr.glossary.glossary">
-->
<!--
<glossentry id="ugr.glossary.">
<glossterm></glossterm>
<glosssee otherterm="ugr.glossary."></glosssee>
<glossdef>
<para></para>
<glossseealso otherterm="ugr.glossary."/>
</glossdef>
</glossentry>
-->
<glossentry id="ugr.glossary.aggregate">
<glossterm>Aggregate &ae;</glossterm>
<glossdef>
<para>An <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>
made up of multiple subcomponent
&ae;s arranged in a flow. The
flow can be one of the two built-in flows, or a custom flow provided by the user.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.analysis_engine">
<glossterm>&ae;</glossterm>
<glossdef><para>A program that analyzes artifacts (e.g. documents) and infers information about
them, and which implements the UIMA &ae; interface Specification. It
does not matter how the program is built, with what framework or whether or not
it contains component (<quote>sub</quote>) &ae;s.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.annotation">
<glossterm>Annotation</glossterm>
<glossdef>
<para>The association of a metadata, such as a label, with a region of text (or other
type of artifact). For example, the label <quote>Person</quote> associated with a
region of text <quote>John Doe</quote> constitutes an annotation. We say
<quote>Person</quote> annotates the span of text from X to Y containing exactly
<quote>John Doe</quote>. An annotation is represented as a special
<glossterm linkend="ugr.glossary.type">type</glossterm>
in a UIMA <glossterm linkend="ugr.glossary.type_system">type system</glossterm>.
It is the type used to record
the labeling of regions of a <glossterm linkend="ugr.glossary.sofa">Sofa</glossterm></para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.annotator">
<glossterm>Annotator</glossterm>
<glossdef>
<para>A software
component that implements the UIMA annotator interface. Annotators are
implemented to produce and record annotations over regions of an artifact
(e.g., text document, audio, and video).</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.application">
<glossterm>Application</glossterm>
<glossdef>
<para>An application is the outer containing code that invokes
the UIMA framework functions to instantiate an
<glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm> or a
<glossterm linkend="ugr.glossary.cpe">Collection Processing Engine</glossterm> from a particular
descriptor, and run it.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.apache_uima_java_framework">
<glossterm>Apache UIMA Java Framework</glossterm>
<glossdef>
<para>A Java-based implementation of the <glossterm linkend="ugr.glossary.uima">UIMA</glossterm>
architecture. It provides a run-time environment in which developers can plug in and run their UIMA component
implementations and with which they can build and deploy UIM applications. The framework is the
core part of the <glossterm linkend="ugr.glossary.apache_uima_sdk">Apache UIMA SDK</glossterm>.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.apache_uima_sdk">
<glossterm>Apache UIMA Software Development Kit (SDK)</glossterm>
<glossdef>
<para>The SDK for which you are now reading the documentation. The SDK includes the framework
plus additional components such as tooling and examples. Some of the tooling is Eclipse-based
(<ulink url="http://www.eclipse.org/"/>).</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cas">
<glossterm>CAS</glossterm>
<glossdef>
<para>The UIMA Common Analysis Structure is
the primary data structure which UIMA analysis components use to represent and
share analysis results. It contains:</para>
<itemizedlist><listitem><para>The artifact. This is the object
being analyzed such as a text document or audio or video stream. The CAS
projects one or more views of the artifact. Each view is referred to as a
<glossterm linkend="ugr.glossary.sofa">Sofa</glossterm>.</para></listitem>
<listitem><para>A type system description &ndash;
indicating the types, subtypes, and their features. </para></listitem>
<listitem><para>Analysis metadata &ndash; <quote>standoff</quote>
annotations describing the artifact or a region of the artifact </para></listitem>
<listitem><para>An index repository to support
efficient access to and iteration over the results of analysis.
</para></listitem></itemizedlist>
<para>UIMA&apos;s primary interface to this structure is provided by
a class called the Common Analysis System. We use <quote>CAS</quote> to refer to
both the structure and system. Where the common analysis structure is used
through a different interface, the particular implementation of the structure
is indicated, For example, the <glossterm linkend="ugr.glossary.jcas">JCas</glossterm> is a native Java object
representation of the contents of the common analysis structure.</para>
<para>A CAS can have multiple views; each view has a unique
representation of the artifact, and has its own index repository, representing
results of analysis for that representation of the artifact.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cas_consumer">
<glossterm>CAS Consumer</glossterm>
<glossdef>
<para>A component that
receives each CAS in the collection, usually after it has been processed by an
<glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>. It is responsible for taking the results from
the CAS and using them for some purpose, perhaps storing selected results into
a database, for instance. The CAS
Consumer may also perform collection-level analysis, saving these results in an
application-specific, aggregate data structure.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cas_initializer">
<glossterm>CAS Initializer (deprecated)</glossterm>
<glossdef>
<para>Prior to version 2, this was the component that took an
undefined input form and produced a particular <glossterm linkend="ugr.glossary.sofa">Sofa</glossterm>.
For version 2, this has been replaced with using any <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>
which takes a particular <glossterm linkend="ugr.glossary.cas_view">CAS View</glossterm> and creates a
new output Sofa. For example, if the document is HTML, an &ae; might
create a Sofa which is a detagged version of an input CAS View, perhaps also
creating annotations derived from the tags. For example &lt;p&gt; tags
might be translated into Paragraph annotations in the CAS.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cas_multiplier">
<glossterm>CAS Multiplier</glossterm>
<glossdef>
<para>A component, implemented by a UIMA developer,
that takes a CAS as input and produces 0 or more new CASes as output. Common use cases for a CAS Multiplier
include creating alternative versions of an input <glossterm linkend="ugr.glossary.sofa">Sofa</glossterm>
(see <glossterm linkend="ugr.glossary.cas_initializer">CAS Initializer</glossterm>), and breaking
a large input CAS into smaller pieces, each of which is emitted as a
separate output CAS. There are other
uses, however, such as aggregating input CASes into a single output CAS.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cas_processor">
<glossterm>CAS Processor</glossterm>
<glossdef>
<para>A component of a Collection Processing Engine (CPE) that
takes a CAS as input and returns a CAS as output. There are two types of CAS
Processors: <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>s and
<glossterm linkend="ugr.glossary.cas_consumer">CAS Consumer</glossterm>s.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cas_view">
<glossterm>CAS View</glossterm>
<glossdef>
<para>A CAS Object which shares the base CAS and type system
definition and index specifications, but has a unique index repository and a
particular <glossterm linkend="ugr.glossary.sofa">Sofa</glossterm>. Views are named, and applications and
annotators can dynamically create additional views whenever they are needed.
Annotations are made with respect to one view. Feature structures can have references to feature structures
indexed in other views, as needed.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cde">
<glossterm>CDE</glossterm>
<glossdef>
<para>The Component Descriptor Editor. This
is the Eclipse tool that lets you conveniently edit the UIMA descriptors;
see <olink targetdoc="&uima_docs_tools;" targetptr="ugr.tools.cde"/>.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cpe">
<glossterm>Collection Processing Engine (CPE)</glossterm>
<glossdef>
<para>Performs Collection Processing
through the combination of a
<glossterm linkend="ugr.glossary.collection_reader">Collection Reader</glossterm>,
0 or more <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>s,
and zero or more <glossterm linkend="ugr.glossary.cas_consumer">CAS Consumer</glossterm>s.
The Collection Processing Manager (CPM) manages the execution of the engine.</para>
<para>The CPE also refers to the XML specification of the Collection Processing
engine. The CPM reads a CPE specification and instantiates a CPE instance from it,
and runs it.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.cpm">
<glossterm>Collection Processing Manager (CPM)</glossterm>
<glossdef>
<para>The part of the framework that
manages the execution of collection processing, routing CASs from the
<glossterm linkend="ugr.glossary.collection_reader">Collection Reader</glossterm>
to 0 or more <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>s
and then to the 0 or more <glossterm linkend="ugr.glossary.cas_consumer">CAS Consumer</glossterm>s. The CPM
provides feedback such as performance statistics and error reporting and supports
other features such as parallelization and error handling.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.collection_reader">
<glossterm>Collection Reader</glossterm>
<glossdef>
<para>A component
that reads documents from some source, for example a file system or database.
The collection reader initializes a CAS with this document.
Each document is returned as a CAS that may then be processed by
an <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>s. If the task of populating a CAS
from the document is complex, you may use an arbitrarily complex chain of
<glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>s and have the last one
create and initialize a new <glossterm linkend="ugr.glossary.sofa">Sofa</glossterm>.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.fact_search">
<glossterm>Fact Search</glossterm>
<glossdef>
<para>A search that given a fact pattern, returns facts
extracted from a collection of documents by a set of &ae;s that
match the fact pattern.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.feature">
<glossterm>Feature</glossterm>
<glossdef>
<para>A data member or attribute of a type. Each feature itself has an
associated range type, the type of the value that it can hold. In the
database analogy where types are tables, features are columns.
In the world of structured data types, each feature is a <quote>field</quote>,
or data member.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.flow_controller">
<glossterm>Flow Controller</glossterm>
<glossdef>
<para>A component which implements the interfaces needed
to specify a custom flow within an <glossterm linkend="ugr.glossary.aggregate">&aae;</glossterm>.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.hybrid_analysis_engine">
<glossterm>Hybrid &ae;</glossterm>
<glossdef>
<para>An <glossterm linkend="ugr.glossary.aggregate">&aae;</glossterm>
where more than one of its component &ae;s are deployed
the same address space and one or more are deployed remotely (part tightly and
part loosely-coupled).</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.index">
<glossterm>Index</glossterm>
<glossdef>
<para>Data in the CAS can only be retrieved using Indexes.
Indexes are analogous to the indexes that are
specified on tables of a database. Indexes belong to Index Repositories;
there is one Repository for each
view of the CAS. Indexes are specified
to retrieve instances of some CAS Type (including its subtypes), and can be
optionally sorted in a user-definable way.
For example, all types derived from the UIMA
built-in type <literal>uima.tcas.Annotation</literal> contain begin
and end features, which mark the begin and end offsets in the text where this
annotation occurs. There is a built-in index of Annotations that specifies that
annotations are retrieved sequentially by sorting first on the value of the begin
feature (ascending) and then by the value of the end feature (descending).
In this case, iterating over the annotations, one first obtains annotations that
come sequentially first in the text, while favoring longer annotations, in the case
where two annotations start at the same offset. Users can define their own indexes
as well.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.jcas">
<glossterm>JCas</glossterm>
<glossdef>
<para>A Java object interface to the contents of the CAS.
This interface use additional generated Java classes, where each type in the CAS
is represented as a Java class with the same name, each feature is represented with
a getter and setter method, and each instance of a type is represented as a
Java object of the corresponding Java class.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.keyword_search">
<glossterm>Keyword Search</glossterm>
<glossdef>
<para>The standard search method where one supplies words (or <quote>keywords</quote>)
and candidate documents are returned.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.knowledge_base">
<glossterm>Knowledge Base</glossterm>
<glossdef>
<para>A collection of data that may be interpreted as a
set of facts and rules considered true in a possible world.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.loosely_coupled_analysis_engine">
<glossterm>Loosely-Coupled &ae;</glossterm>
<glossdef>
<para>An <glossterm linkend="ugr.glossary.aggregate">&aae;</glossterm>
where no two of its component &ae;s run in the
same address space but where each is remote with respect to the others that
make up the aggregate. Loosely coupled engines are ideal for using
remote &ae; services that are
not locally available, or for quickly assembling and testing functionality in
cross-language, cross-platform distributed environments. They also better enable
distributed scaleable implementations where quick recoverability may have a
greater impact on overall throughput than analysis speed.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.ontology">
<glossterm></glossterm>
<glossdef>
<para>The part of a knowledge base that defines the semantics of the data
axiomatically.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.pear">
<glossterm>PEAR</glossterm>
<glossdef>
<para>An archive file that packages up a UIMA component with its code,
descriptor files and other resources required to install and run it in another
environment. You can generate PEAR files using utilities that come with the
UIMA SDK.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.primitive_analysis_engine">
<glossterm>Primitive &ae;</glossterm>
<glossdef>
<para>An <glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>
that is composed of a single
<glossterm linkend="ugr.glossary.annotator">Annotator</glossterm>; one that has
no component (or <quote>sub</quote>) &ae;s inside of it;
contrast with
<glossterm linkend="ugr.glossary.aggregate">&aae;</glossterm>.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.semantic_search">
<glossterm>Semantic Search</glossterm>
<glossdef>
<para> search where the semantic intent of the query is
specified using one or more entity or relation specifiers. For example,
one could specify that they are looking for a person (named) <quote>Bush.</quote>
Such a query would then not return results about the kind of bushes that grow
in your garden but rather just persons named Bush.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.structured_information">
<glossterm>Structured Information</glossterm>
<glossdef>
<para>Items stored in structured resources such as
search engine indices, databases or knowledge bases. The canonical example of
structured information is the database table. Each element of information in
the database is associated with a precisely defined schema where each table
column heading indicates its precise semantics, defining exactly how the
information should be interpreted by a computer program or end-user.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.sofa">
<glossterm>Subject of Analysis (Sofa)</glossterm>
<glossdef>
<para>A piece of
data (e.g., text document, image, audio segment, or video segment), which is intended
for analysis by UIMA analysis components. It belongs to a
<glossterm linkend="ugr.glossary.cas_view">CAS View</glossterm> which has the same name; there
is a one-to-one correspondence between these. There can be multiple Sofas contained within
one CAS, each one representing a different view of the original artifact &ndash; for example,
an audio file could be the original artifact, and also be one Sofa, and another
could be the output of a voice-recognition component, where the Sofa would be
the corresponding text document. Sofas may be analyzed independently or
simultaneously; they all co-exist within the CAS. </para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.tightly_coupled_analysis_engine">
<glossterm>Tightly-Coupled &ae;</glossterm>
<glossdef>
<para>An <glossterm linkend="ugr.glossary.aggregate">&aae;</glossterm>
where all of its component &ae;s run in the same address space.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.type">
<glossterm>Type</glossterm>
<glossdef>
<para>A specification of an object in the
<glossterm linkend="ugr.glossary.cas">CAS</glossterm> used to store the results of
analysis. Types are defined using inheritance, so some types may be
defined purely for the sake of defining other types, and are in this sense <quote>abstract
types.</quote> Types usually contain
<glossterm linkend="ugr.glossary.feature">Feature</glossterm>s, which are attributes, or
properties of the type. A type is roughly equivalent to a class in an
object oriented programming language, or a table in a database. Instances of types in the CAS
may be indexed for retrieval.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.type_system">
<glossterm>Type System</glossterm>
<glossdef>
<para>A collection of related <glossterm linkend="ugr.glossary.type">types</glossterm>.
All components that can access the CAS,
including <glossterm linkend="ugr.glossary.application">Applications</glossterm>,
<glossterm linkend="ugr.glossary.analysis_engine">Analysis Engine</glossterm>s,
<glossterm linkend="ugr.glossary.collection_reader">Collection Readers</glossterm>,
<glossterm linkend="ugr.glossary.flow_controller">Flow Controllers</glossterm>, or
<glossterm linkend="ugr.glossary.cas_consumer">CAS Consumers</glossterm>
declare the type system that they use. Type systems are shared across &ae;s, allowing the outputs
of one &ae; to be read as input by another &ae;.
A type system is roughly analogous to a set of related classes in object
oriented programming, or a set of related tables in a database. The type
system / type / feature terminology comes from computational linguistics.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.unstructured_information">
<glossterm>Unstructured Information</glossterm>
<glossdef>
<para>The canonical example of unstructured
information is the natural language text document. The intended meaning of a
document's content is only implicit and its precise interpretation by a
computer program requires some degree of analysis to explicate the document's
semantics. Other examples include audio, video and images. Contrast with
<glossterm linkend="ugr.glossary.structured_information">Structured Information</glossterm>.
</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.uima">
<glossterm>UIMA</glossterm>
<glossdef>
<para>UIMA is an acronym that stands for Unstructured Information Management Architecture;
it is a software architecture which specifies component interfaces, design patterns
and development roles for creating, describing, discovering, composing and
deploying multi-modal analysis capabilities. The UIMA specification is being developed by a
technical committee at <ulink url="http://www.oasis-open.org/committees/uima">OASIS</ulink>.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.uima_java_framework">
<glossterm>UIMA Java Framework</glossterm>
<glossdef>
<para>See <glossterm linkend="ugr.glossary.apache_uima_java_framework">Apache UIMA Java Framework</glossterm>.</para>
<para/>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.uima_sdk">
<glossterm>UIMA SDK</glossterm>
<glossdef>
<para>See <glossterm linkend="ugr.glossary.apache_uima_sdk">Apache UIMA SDK</glossterm>.</para>
<para/>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.xcas">
<glossterm>XCAS</glossterm>
<glossdef>
<para>An XML representation of the CAS. The XCAS can be used for saving
and restoring CASs to and from streams. The UIMA SDK provides XCAS serialization and
de-serialization methods for CASes. This is an older serialization format and
new UIMA code should use the standard <glossterm linkend="ugr.glossary.xmi">XMI</glossterm>
format instead.</para>
</glossdef>
</glossentry>
<glossentry id="ugr.glossary.xmi">
<glossterm>XML Metadata Interchange (XMI)</glossterm>
<glossdef>
<para>An OMG standard for representing
object graphs in XML, which UIMA uses to serialize analysis results from the
CAS to an XML representation. The UIMA SDK provides XMI serialization and
de-serialization methods for CASes</para>
</glossdef>
</glossentry>
<!--
<glossentry id="ugr.glossary.">
<glossterm></glossterm>
<glossdef>
<para></para>
</glossdef>
</glossentry>
-->
</glossary>
<!--
</chapter>
-->