<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Annotated Search and Element Retrieval</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Hugo Zaragoza</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Matthews</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Roi Blanco</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jordi Atserias</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Yahoo! Research</institution>
          ,
          <addr-line>Barcelona</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Despite the great interest in dierent forms of textual annotation (named entity extraction, semantic tagging, syntactic and semantic parsing, etc.), there is still no consensus about which search tasks can be improved with such annotations, and what search algorithms are required to implement ecient engines to solve these tasks. We dene formally two retrieval tasks in annotated collections: annotated retrieval and element retrieval. We discuss their dierences and describe ecient indexing structures, and how they can be implemented in Lucene and MG4J, two open source retrieval engines. Finally, we give a technical overview of two element retrieval use cases.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Element Retrieval: retrieval of elements (e.g. entities, not documents)
relevant to an ad-hoc query.</p>
      <p>Annotated Retrieval is the standard ad-hoc document retrieval task, with the
added diculty of coping with annotated collections and queries (examples
13 above). Element retrieval is signicantly dierent from document retrieval,
because what is returned is not a ranked list of documents, but rather, a ranked
list of elements such as entities (examples 4-5 above).</p>
      <p>In the remaining of the paper we discuss both tasks, with an emphasis on the
later. We describe ecient indexing mechanisms required by them (Sections 2
and 3) and describe several use cases.
1.1</p>
      <sec id="sec-1-1">
        <title>Related Work</title>
        <p>
          With the incredible growth of the Internet, there has been a great deal of work on
eciently searching large collections [
          <xref ref-type="bibr" rid="ref14 ref16">14,16</xref>
          ] including a number of open source
search implementations such as Lucene [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] and MG4J [
          <xref ref-type="bibr" rid="ref20 ref6">20,6</xref>
          ]. In the bulk of this
work, a document (or passage) is represented by tokens, possibly with some
simple stemming operations, but without any further linguistic annotations. There
has been a parallel eort to move beyond keyword representation to capture the
meaning of documents. The semantic web has long promised delivering content
in machine understand form, typically based in RDF [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ]. However, the bulk
of information today is still in the form of free text which has lead to a surge
of research into natural language processing and an increasing number of
annotation frameworks such as GATE [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] and UIMA [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] which allow for large
documentation annotation projects. The benet of the resulting annotations to
search applications has been shown in such areas as biotechnology, legal
document retrieval, etc. Entity ranking has also been gaining interest in dierent
forms: expert search, people search, and other forms of entity ranking have been
addressed by the major evaluation campaigns (such as INEX [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] and TREC
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]). Some academic and commercial search applications have appeared on
different entity search tasks, such as Beagle++ [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] which provides a semantic-based
desktop search utility. However, in our opinion there is still the need of a clear
framework for research in annotation retrieval and entity ranking; Rode [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]
provides an early attempt on entity ranking, very much in the lines of our present
work.
        </p>
        <p>
          Several open source search engines have tackled the technical problems of
implementing annotated search engines, mainly (to our knowledge): PF-Tijah [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]
a native XML search-engine, Solr [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] and LuceneSail [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], which combines the
keyword search capabilities of Lucene with structured data stores, and MG4J
v3.0 and Archive4J [
          <xref ref-type="bibr" rid="ref17 ref20">17,20</xref>
          ] which implement parallel indexes and can be
combined to build ecient element indices.
1.2
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>Notation</title>
        <p>There is no standard notation for retrieval on annotated collections, and dierent
authors have used terms to mean slightly dierent things (terms like entity,
forward index, etc). For this reason we are forced to introduce our own term
denitions and notations. We will discuss annotations and elements (entities, in
a very general sense); relations are outside the scope of this paper.
A passage si 2 S is a sequence of tokens plus context: si = wi1; wi2; :::; wijsij;
Passages may be sentences, paragraphs, documents, sliding windows of text, but
they need to be uniquely identied textual units (for now we do not allow any
structure on the units). Tokens will typically correspond to words, but language
tokenisation is a dicult business and outside the scope of this paper. We will
assume that there is some tokeniser that has taken raw text and segmented it
into tokens. Passages may contain some context information ( ) such as the
title of the document, a surrounding window of text, external meta-data, etc.</p>
        <p>A token annotation is the tuple a = (i; ; ; t) where i is the identier of the
passage annotated, and are the beginning and ending positions of the
annotation respectively, and t is the type of the annotation. An element is a tuple
e = (s; t) where s is its value (a sequence of tokens) and t is its type. Unlike
annotations, elements are not tied to a particular passage . We call E the set of
all elements.</p>
        <p>Annotations can be obtained by automatic or manual extraction and can be
encoded in many dierent ways, depending on their intended usage, their sizes,
types, etc. The following sections will discuss this issue.</p>
        <p>We also need some notation to express search queries. Given the collection of
passages S, a query is dened as a function that maps S to a ranked subset
Sq. We will use the following query operators (which can be combined into
more complex queries): conjunction \a b" retrieves passages with tokens a and
b, disjunction \ajb" retrieves passages with tokens a or b, eld restriction A : a
retrieves passages with token a in eld A, position restriction \[a; b] n"
retrieves passages where token a is followed by token b in a window of at most n
tokens, and alignment \a ^ b" retrieves passages where token a is aligned with
(in the same position as) token b.
2</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Annotated Passage Retrieval</title>
      <p>Inverted indices allow fast and ecient retrieval of passages for token queries
allowing some operators (such as disjunctive and conjunctive queries, token
prexes, constraints on match distances, etc). It is possible to modify these indices
to allow similar query operators on an annotated collection.</p>
      <p>In its basic form, an inverted index contains one postings list for every token
present in the collection. Typically, postings lists may contain information
arranged into dierent levels of granularity, from the presence/absence of tokens
to their frequency or retrieval weight, their position, eld information,
typography, etc. It is possible to modify inverted indices slightly to perform retrieval
and ranking over annotated collections. One approach is to implement several
parallel indexes on the collection, by allowing several tokens in dierent elds to
share the same position: the main index stores the positions of text tokens, and
each additional index stores the annotations of the dierent types. At a low-level
this implies building a dierent index for each type we want to include in a query
(tokens, entity types, and so on), and implementing a fast alignment operator.
For instance, querying for the element e1 =[apple, SUBSTANCE] would
require a searching for the text-token apple in the same position as the type-token
SUBSTANCE. The query for the element e1could be translated then into
apple:TOKENS ^ SUBSTANCE:TYPES . A passage would satisfy this query if
both apple and SUBSTANCE are found in the same passage at the same
position. Since the alignment operator preserves the semantics of the other query
operators, the result is a very powerful query language over annotated
collections. Alignment can be used in combination with phrasal queries, negation,
positional restrictions, etc. For example, we could query for pizza or pasta in
New York as [(pizza|pasta) [New^CITY, York^CITY] 1]] 10 .
Note that in the examples above we did not enforce the limits of the elements:
our queries would incorrectly match longer elements (such as [apple pie,
SUBSTANCE] ) or sequences of short ones (such as [New, CITY] [York, CITY] ).
This can be solved by encoding the limits into the types. In particular, we
concatenate to the type a character encoding the bracketing (e.g. beginning ( B ),
ending (E ), continuing (I ) or a single token ( U )). This way we can query for
apple^SUBSTANCE_U and [New^CITY_B, York^CITY_E] 1 .
There is a special type of annotated query that is common in applications and
that does not require a full-blown parallel index: a type restriction. Here, we
want to restrict our search to passages that contain a particular annotation type
(e.g. Einstein DATE ). We are not concerned with the position of the type
annotation in the text, or even with the actual value of the annotation. This
type of ltering is easily implemented using elds (without positions) where we
simply store the types present in the passage.</p>
      <p>
        Parallel inverted indices can be easily implement in traditional search engines
with positional indices, and for this reason they have been used extensively
although rarely discussed in the academic literature. In the open domain, parallel
indices are implemented in MG4J and can be implemented easily in other
frameworks such as Lucene. For example, in Lucene, one can obtain a parallel index
by writing a document reader that does not increment the position (setting
PositionIncrement to 0) when types are encountered. Although Lucene does not
provide specically an alignment operator, one can obtain one by forcing a
distance of zero between the token and the type. In MG4J parallel indices can be
obtained naturally by indexing dierent elds and aligning them at query time
with the alignment operator. Another example of a parallel index discussed in
the literature is the colored index used by Attardi’s IXE system [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>Element Retrieval</title>
      <p>In applications such as element ranking and faceted search we are required to
provide a ranked list of elements (not documents) that are relevant to the query
in some sense. This requires more analysis in the corpus than the standard
retrieval task: after solving the query and obtaining a ranked list of passages ( Sq),
we need to nd which elements appear in those documents ( Cq), a potentially
expensive operation.</p>
      <p>The most straightforward method would be, for each returned passage, to load
the full original annotated passage and simply traverse the passage counting
the annotations. The performance would be highly dependent on the eciency
with which the passage annotations could be loaded given the passage identier.
If the original documents are stored as individual les in a le system or as
records in a database system, it may be possible to retrieve 10 or even 100
passages, but retrieving even 1000 passages will not be feasible for a real time
search application. It is clear that a more ecient data structure must be used
to perform the counts.</p>
      <p>If we ignore the positions of annotations ( and ) the relationship between
passages and element instances can be represented conceptually as a graph, in
which each passage s 2 S and each element e 2 E are nodes, and there is a
directed edge from s to e if the element e is present (contained) in the passage s.
We call this an element containment graph C, and since it is a bipartite graph it
can be represented as a jSj jE j matrix, where Cij is the strength of connection
between passage si and element ej (typically 1 if it appears, 0 otherwise).
At query time, we execute the standard query and obtain the set of passages
of interest (Sq, or perhaps only the top- k scores in this set). Then, for every
passage of interest we query C to obtain the elements contained in the passage.
Doing so, we obtain the subgraph Cq C which contains information useful for
ranking, such as the frequency of an entity in the result set.</p>
      <p>
        Representing C as a graph allows us to use tools from graph theory and linear
algebra to further understand and manipulate elements. For example, we see
that the passage frequency of an element is equal to its degree in the graph,
and this can be extended to the weighted degree, which takes into account the
strength of the connection of each of its instances. Furthermore, CCT gives us a
passage similarity (equal to the number of element co-occurrences if C is binary),
and CT C an entity similarity (number of passage co-occurrences if C is binary).
We can further use C to dene graph centrality algorithms such as HITS or
PageRank, or to dene several types of random walks [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        Representing C as a bipartite graph also allows us to use existing graph
compression and querying algorithms, such as WebGraph [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The actual values of
the entities and passages (e.g. its string values and other meta-data) are typically
stored separately in dictionaries, for example as alphabetically ordered les (or
further compressed as front-encoded lists for example). This makes it possible
to keep in memory element containment graphs of millions of nodes, and query
them many thousands of times per second.
      </p>
      <p>Like any sparse matrix, C can also be represented as an index either in row
(passage) order or column (element) order. A row can be seen as a description
of the elements contained in a passage: si : fei1; :::; eing, whereas a column is a
description of the passages in which an element is present ej : fsj1; :::; sjmg. Both
these representations lead to ecient indexes which allow querying for passages
(in the rst case) and for elements (in the second case). If instead of elements we
were considering textual terms, then the column vectors would be similar to an
inverted index. Pushing the analogy, some people refer to row or passage order
indices as forward indices.</p>
      <p>
        There exist ecient algorithms to store forward indices. Archive4J [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] was
specically designed for this purpose, and implements a data structure called
an archive, which builds a direct le of a document collection allowing retrieval
of data from a single document, specically its length in words and which terms
occur in the document with their respective term frequencies. The tool provides
random access to documents while being able to obtain high compression ratios.
By indexing elements instead of terms, we can obtain a forward index (a row of
C). Solr, a search engine built using the Lucene libraries, has a similar structure
referred to as an UnInvertedIndex. Both structures are useful to rapidly
determine (and possibly count) which elements are present in Sq, the (possibly very
large) set of passages returned by the query.
      </p>
      <p>The following subsections describe the technical details of two applications that
utilize many of these techniques.
3.1</p>
      <sec id="sec-3-1">
        <title>Correlator</title>
        <p>
          Correlator [
          <xref ref-type="bibr" rid="ref15 ref18">18,15</xref>
          ] is an entity retrieval demo on the English Wikipedia. It allows
users to search for entities (elements of certain types) related to a free query. The
collection in Correlator consists of 2,276,293 English Wikipedia entries (roughly
one billion words). This collection was pre-processed with a set of linguistic
tools (see [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] for an explanation) to obtain annotations following the Wall Street
Journal BBN Entity Types from LDC 1. This lead to 26,110,586 unique elements
of 105 types.
        </p>
        <p>In order to implement element retrieval in Correlator, we use several of the data
structures discussed above. First, a passage is dened as a single sentence (an
automatic sentence splitter was used for this, leading to 62,614,788 sentences).
The context of a passage is dened as the Wikipedia entry title, plus the two
sentences immediately before and after the sentence indexed. This content is
indexed in a separate eld to the sentence (which forms the body of the retrieval
unit). Furthermore, in order to implement ltering by type, we index with each
sentence a sequence of type tokens which indicate which types are present in the
sentence. This type of index allows us to nd passages (sentences) relevant to a
query, and to lter them by type. To implement entity retrieval, we also construct
the element containment graph using the top 1000 results. This graph contains
one node per sentence, one node per element and one edge per annotation; the
size of the resulting graph, once compressed using WebGraph, is 1.8G bytes.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Question eXplorer</title>
        <p>
          Question eXplorer (QX) [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] is a browsing interface that demonstrates the power
of combining linguistic parsing and fast forward indices. Every time the user
types a query, besides doing the traditional retrieval, it computes statistics over
all the elements present in the result set (e.g. in the query element containment
graph Cq). It uses these statistics to build lists of the most frequent elements of
every type and proposes them to the users for query completion. The types of
elements used are very specic: noun phrases (NPs), verbs (Vs), noun modiers
(K), verb modiers (M) and numbers (Q). In order to extract the most interesting
elements in a passage, we pre-process the passage using a linguistic parser (as
described in [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]) and select the elements closest to the root of the parsing tree.
Furthermore, for noun phrases with more than one token, we created elements for
the phrase and for sub-phrases containing the head (e.g. we created the element
[cheap computer screen,NP], but also [compute screen,NP] and [screen,NP]).
In order to implement this eciently we need to rank all the elements present
in a result set. This problem is similar to the entity ranking problem, but with
some dierences. First, the number of entities is potentially very large: every
verb and noun-phrase, and many sub-strings of these. Second, the number of
types is very small (only two). Third, we want to count all the elements in
the returned passages (or as many as possible), not just the top- k. In order to
implement this, we encoded the element containment graph as a fast
passageelement index (using the Archive4J libraries [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]). For a collection of 4,483,032
questions (roughly 48M tokens) we extracted 56,280,105 elements (roughly 390M
bytes of text). The forward and backward indices are implements using MG4J.
The inverted index for searching passages (standard token inverted index) results
in a size of 2,144M bytes. The element forward index (implemented using the
archive4J library) has a size of 656M bytes.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusions and Future Work</title>
      <p>We have formally dened two retrieval tasks on annotated collections and
described how these tasks have been implemented for two applications using open
source tools. In the future, we plan on evaluating the performance of the
techniques presented in order to provide guidelines for building annotated search
applications.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>1. Overview of the inex 2008 entity ranking track</article-title>
          .
          <source>In INEX</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>J.</given-names>
            <surname>Atserias</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Zaragoza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ciaramita</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Attardi</surname>
          </string-name>
          .
          <article-title>Semantically annotated snapshot of the english wikipedia</article-title>
          .
          <source>In LREC'08</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>G. Attardi.</surname>
          </string-name>
          <article-title>IXE at the TREC 2005 Terabyte Task</article-title>
          .
          <source>In TREC</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>P.</given-names>
            <surname>Bailey</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. P. de Vries</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Craswell</surname>
            ,
            <given-names>and I. Soboro.</given-names>
          </string-name>
          <article-title>Overview of the trec 2007 enterprise track</article-title>
          .
          <source>In Proceedings of TREC 2007 the 16th Text REtrieval Conference</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>P.</given-names>
            <surname>Boldi</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Vigna</surname>
          </string-name>
          .
          <article-title>The WebGraph framework I: Compression techniques</article-title>
          .
          <source>In WWW 2003</source>
          , pages
          <fpage>595601</fpage>
          . ACM Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>P.</given-names>
            <surname>Boldi</surname>
          </string-name>
          and
          <string-name>
            <surname>S. Vigna.</surname>
          </string-name>
          <article-title>MG4J at TREC 2005</article-title>
          . In TREC 2005,
          <article-title>Special Publications</article-title>
          . NIST,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>I.</given-names>
            <surname>Brunkhorst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.A.</given-names>
            <surname>Chirita</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Costache</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gaugaz</surname>
          </string-name>
          , E. Ioannou,
          <string-name>
            <given-names>T.</given-names>
            <surname>Iofciu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Minack</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Nejdl</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Paiu</surname>
          </string-name>
          .
          <article-title>The beagle++ toolbox: Towards an extendable desktop search architecture</article-title>
          .
          <source>In SemDesk</source>
          <year>2006</year>
          , volume
          <volume>202</volume>
          ,
          <year>November 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>H.</given-names>
            <surname>Cunningham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maynard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Bontcheva</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Tablan</surname>
          </string-name>
          .
          <article-title>GATE: A framework and graphical development environment for robust NLP tools and applications</article-title>
          .
          <source>In ACL</source>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>R. van Os</surname>
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Hiemstra</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Rode</surname>
            and
            <given-names>J. Flokstra.</given-names>
          </string-name>
          <article-title>PF/Tijah: text search in an XML database system</article-title>
          .
          <source>OSIR</source>
          , pages
          <fpage>1217</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>D.</given-names>
            <surname>Ferrucci</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Lally</surname>
          </string-name>
          .
          <article-title>UIMA: an architectural approach to unstructured information processing in the corporate research environment</article-title>
          .
          <source>Nat. Lang</source>
          . Eng.,
          <volume>10</volume>
          (
          <issue>3-4</issue>
          ):
          <fpage>327348</fpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. E.
          <string-name>
            <surname>Minack</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Sauermann</surname>
            , G. Grimnes,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Fluit</surname>
            , and
            <given-names>J. Broekstra.</given-names>
          </string-name>
          <article-title>The sesame lucene sail: Rdf queries with full-text search</article-title>
          .
          <source>Technical Report 2008-1</source>
          ,
          <string-name>
            <given-names>NEPOMUK</given-names>
            <surname>Consortium</surname>
          </string-name>
          ,
          <year>February 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>H.</given-names>
            <surname>Rode</surname>
          </string-name>
          . From Document to Entity Retrieval:
          <article-title>Improving Precision and Performance of Focused Text Search</article-title>
          .
          <source>PhD thesis</source>
          , University of Twente, Enschede, The Netherlands,
          <year>June 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>N.</given-names>
            <surname>Shadbolt</surname>
          </string-name>
          ,
          <string-name>
            <surname>Berners</surname>
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Lee</surname>
            , and
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Hall</surname>
          </string-name>
          .
          <article-title>The semantic web revisited</article-title>
          .
          <source>Intelligent Systems</source>
          , IEEE,
          <volume>21</volume>
          (
          <issue>3</issue>
          ):
          <fpage>96101</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>I. H.</given-names>
            <surname>Witten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Moat</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Bell</surname>
          </string-name>
          . Managing Gigabytes:
          <article-title>Compressing and Indexing Documents and Images</article-title>
          . Morgan Kaufmann Publishers, CA,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. H.
          <string-name>
            <surname>Zaragoza</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Rode</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Mika</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Atserias</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Ciaramita</surname>
            , and
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Attardi</surname>
          </string-name>
          .
          <article-title>Ranking very many typed entities on wikipedia</article-title>
          .
          <source>In CIKM '07</source>
          . ACM Press,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>J.</given-names>
            <surname>Zobel</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Moat</surname>
          </string-name>
          .
          <article-title>Inverted les for text search engines</article-title>
          .
          <source>ACM Computing Surveys</source>
          ,
          <volume>38</volume>
          :
          <fpage>156</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>17. Archive4j. http://archive4j.dsi.unimi.it.</mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Correlator</surname>
          </string-name>
          . Yahoo! SandBox. http://sandbox.yahoo.com/Correlator .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Lucene</surname>
          </string-name>
          . Homepage. http://lucene.apache.org/.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. MG4J:
          <article-title>Managing gigabytes for java</article-title>
          .
          <source>Homepage</source>
          . http://mg4j.dsi.unimi.it/.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <article-title>Query explorer. Yahoo! SandBox (to be published)</article-title>
          . http://sandbox.yahoo.com/ qx.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Solr</surname>
          </string-name>
          . Homepage. http://lucene.apache.org.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>