<?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/ruta/workbench/" >
<!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="section.ugr.tools.ruta.workbench.ruta_query">
  <title>Ruta Query View</title>
  <para> With the Query View, the UIMA Ruta language can be used to write queries on a set of
    documents. A query is simply a set of UIMA Ruta rules. Each query returns a list of all text
    passages the query applies to. For example, if you have a set of annotated documents containing
    a number of Author annotations, you could use the Query View to get a list of all the author
    names associated with these annotations.
  </para>
  <para>
    <figure id="figure.ugr.tools.ruta.workbench.ruta_query.query_view">
      <title>The Query View.
        <emphasis role="bold">(1)</emphasis>
        Start Button;
        <emphasis role="bold">(2)</emphasis>
        Export Button</title>
      <mediaobject>
        <imageobject role="html">
          <imagedata width="576px" format="PNG" align="center"
            fileref="&imgroot;query/query_example2_number.png" />
        </imageobject>
        <imageobject role="fo">
          <imagedata width="3.0in" format="PNG" align="center"
            fileref="&imgroot;query/query_example2_number.png" />
        </imageobject>
        <textobject>
          <phrase>Query View</phrase>
        </textobject>
      </mediaobject>
    </figure>
  </para>
  <para>
    Use the Query view as follows:
    <orderedlist numeration="arabic">
      <listitem>
        <para>
          The field
          <quote>Query Data</quote>
          specifies the folder containing the documents on which the query should be executed. You
          can either click on the button next to the field to specify the folder by browsing through
          the file system or you can drag and drop a folder directly into the field. If the
          checkbox is activated, all subfolders are included.
        </para>
      </listitem>
      <listitem>
        <para>
          The field
          <quote>Type System</quote>
          has to contain a type system or a UIMA Ruta script that specifies all types that are used
          in the query. You can either click on the button next to the field to specify the type
          system by browsing through the file system or you can drag and drop a type system
          directly into the field.
        </para>
      </listitem>
      <listitem>
        <para> The query in form of one or more UIMA Ruta rules is specified in the text field in
          the middle of the view.</para>
      </listitem>
      <listitem>
        <para> After pressing the start button, the query is started. The results are subsequently
          displayed in the bottom text field.</para>
      </listitem>
    </orderedlist>
  </para>
  <para> The resulting list consists of all text passages the query applied to. Above the text
    field, information about the entire number of matches and the number of different documents the
    query applied to is given. Each item in the list shows both the matched text passage and in
    brackets the document related to the text passage. By double-clicking on one of the listed
    items, the related document is opened in the editor and the matched text passage is selected. If
    the related document is already open you can jump to another matched text passage within the the
    same document with one click on the listed item. Of course, this text passage is selected. 
    By clicking on the export button, a list of all matched text passaged is showed in a
    separate window. For further usage, e.g. as a list of authors in another UIMA Ruta project,
    copy the content of this window to another text file.
  </para>
  <para> The screenshot shows an example where a rule is used to find occurrences of years within
    brackets in the input file of the UIMA Ruta example. After pressing the run button the result
    list contains all occurrences. Recognize that the rule does not create any annotation. The list
    lists all rule matches, not the created annotations.
  </para>
</section>