<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="//zbw.eu/labs"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>ZBW Labs - STW</title>
 <link>//zbw.eu/labs/en/taxonomy/term/57</link>
 <description></description>
 <language>en</language>
<item>
 <title>Thesaurus-augmented Search with Jena Text</title>
 <link>//zbw.eu/labs/en/blog/thesaurus-augmented-search-with-jena-text</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;schema:articleBody content:encoded&quot;&gt;&lt;p&gt;How can we get most out of a thesaurus to support user searches? Taking advantage of SKOS thesauri published on the web, their mappings and the latest Semantic Web tools, we can support users both with synonyms (e.g. &quot;accountancy&quot; for &quot;bookkeeping&quot;) for their original search terms as well as with suggestions for neighboring concepts.&lt;/p&gt;
&lt;p&gt;Thesauri describe the concepts of a domain (e.g., economics, as covered by &lt;a href=&quot;http://zbw.eu/stw&quot;&gt;STW&lt;/a&gt;), enriched with lots of alternate labels (possibly in multiple languages). These terms form a cloud of search terms, which could be used on keyword and free-text fields in arbitrary databases - simply querying for (&quot;term a&quot; OR &quot;term b&quot; OR ...).&lt;/p&gt;
&lt;p&gt;The relationships within the theaurus can be exploited additionally to bring up concepts (and their respective cloud of search terms) which are related to the original query of the user, and may or may not be instrumental for further exploration of the query space.&lt;/p&gt;
&lt;h2&gt;Basic search algorithm using text retrieval&lt;/h2&gt;
&lt;p&gt;Unfortunately however, users tend to rarely use the &quot;correct&quot; thesaurus terms or straight synonyms in their search queries. Especially, if the query consists of more than one word, these words may ask for a single concept (such as &quot;free trade zone&quot;) or multiple concepts (such as &quot;financial crisis in china&quot;), or may even contain proper names (e.g, &quot;siebert environmental economics&quot;). And of course, within the single search box, the terms referring to different concepts are not separated neatly, but occur without delimiter in any order.&lt;/p&gt;
&lt;p&gt;So the first task is to identify the concepts which may be relevant to a given search query. We see no reasonable chance for an exact analysis of maybe complex search queries in real time in order to split the query string and identify the single concepts (or persons, or things) according to the user&#039;s intention. Instead, we prefer to look at &lt;em&gt;thesaurus concepts as text documents&lt;/em&gt;, with all their preferred or alternate or even hidden labels (the latter sometimes used to cover common misspellings) as part of the document&#039;s text. We then can build a text index on these documents. This done, we can just take the unmodified query string and apply standard text search algorithms to get the best fitting documents for this query. What &quot;best fitting&quot; means exactly depends on the scoring algorithms of the retrieval software. Here, heuristics come into play. These heuristics can be tuned often according to the special use case and document set. Using the defaults of the software described below we felt no urge to tune, since it worked pretty well out-of-the-box.&lt;/p&gt;
&lt;p&gt;Having the matching concepts identified, the thesaurus relationships can be used to offer neighboring concepts. We found the skos:narrower and the skos:related relationships most useful, but this may depend on the domain and on the construction of the particular thesaurus. In a final step, all concepts can be enriched with their labels, in order to be available for building search queries.&lt;/p&gt;
&lt;p&gt;From a practical point of view, it is important that the three steps described here are executed in a single query. As it is executed over the network, having more than one round-trip could impact performance considerably.&lt;/p&gt;
&lt;h2&gt;Implementation as SPARQL query&lt;/h2&gt;
&lt;p&gt;We used the upcoming &lt;a href=&quot;http://jena.apache.org/documentation/query/text-query.html&quot;&gt;Jena Text&lt;/a&gt; module as part of the &lt;a href=&quot;http://jena.apache.org/documentation/serving_data/&quot;&gt;Jena Fuseki&lt;/a&gt; RDF/SPARQL server to implement the algorithm described above. On top of a triple store, it feeds the &lt;a href=&quot;http://zbw.eu/beta/econ-ws/about#service_combined1&quot;&gt;/combined1 web service for economics&lt;/a&gt; (1). The text module will be generally available with the next Jena 2.10.2 / Fuseki 0.2.8 version, but is quite stable already (&lt;a title=&quot;Jena Fuseki 0.2.8 Snapshots&quot; href=&quot;https://repository.apache.org/content/repositories/snapshots/org/apache/jena/jena-fuseki/0.2.8-SNAPSHOT/&quot;&gt;snapshot here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Jena Text allows us to ask for concepts related to, e.g., &quot;telework&quot; with the statement&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  ?concept text:query (&#039;telework&#039; 1)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The Lucene query format could be used to further specify the query. The second, numeric argument in the argument list allows us to limit the results. We suppose that the maximum number of different concepts asked for in the query may not be higher than the number of words, so in general we put the query word count as a limit.&lt;/p&gt;
&lt;p&gt;When we want to include narrower and related concepts (and their relationship to the matched concepts) in the result, we have to extend the query:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; {&lt;br /&gt;    { ?concept text:query (&#039;telework&#039; 1) }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept text:query (&#039;telework&#039; 1) .&lt;br /&gt;     ?concept skos:narrower ?narrower&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?tmpConcept text:query (&#039;telework&#039; 1) .&lt;br /&gt;     ?tmpConcept skos:narrower ?concept&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept text:query (&#039;telework&#039; 1) .&lt;br /&gt;     ?concept skos:related ?related&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?tmpConcept text:query (&#039;telework&#039; 1) .&lt;br /&gt;     ?tmpConcept skos:related ?concept&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The repetition of the text query is ugly (perhaps someone can suggest a more elegant solution), but seems to do no real harm in terms of execution time.&lt;/p&gt;
&lt;p&gt;The enrichment with the labels is done by a final statement:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; {&lt;br /&gt;    { ?concept skos:prefLabel ?prefLabel }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:prefLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:altLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:hiddenLabel ?label }&lt;br /&gt;  }&lt;br /&gt; BIND (lcase(?label) AS ?hiddenLabel)&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This returns the skos preferred labels as such, and additionally a superset of all skos labels in lowercase form (as ?hiddenLabel), which comes in handy for building search queries.&lt;/p&gt;
&lt;h2&gt;Making use of thesaurus mappings&lt;/h2&gt;
&lt;p&gt;More and more mappings between thesauri (and sometimes other datasets, such as DBpedia) are published. Here an example concept from STW mapped to a concept from the &lt;a href=&quot;http://datahub.io/dataset/gesis-thesozhttp://datahub.io/dataset/gesis-thesoz&quot;&gt;Thesaurus for the Social Sciences&lt;/a&gt; (generated with &lt;a href=&quot;http://graves.cl/visualRDF/&quot;&gt;Visual RDF&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/labs/sites/default/files/media/eco_audit.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;These mappings can be exploited twofold:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;the relevant concepts for a query can be looked up using synonyms (e.g., &quot;Öko-Auditing&quot;) defined for the mapped concepts&lt;/li&gt;
&lt;li&gt;the list of synonyms returned for the identified concepts can be extended by all synonyms of the mapped concepts&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;In order to simplify both of these steps, we set up some data preprocessing, eliminating structural particularities of the mapped vocabularies before or while loading it into our triple store. Reducing skos-xl property chains to just the simple skos labeling properties (pref/alt/hiddenLabel) or replacing DBpedia rdfs:label by skos:prefLabel allows us to use the skos labeling properties consistently in our queries. The complete, executable version looks this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;PREFIX rdf:   &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;&lt;br /&gt;PREFIX skos:  &amp;lt;http://www.w3.org/2004/02/skos/core#&amp;gt;&lt;br /&gt; PREFIX zbwext: &amp;lt;http://zbw.eu/namespaces/zbw-extensions/&amp;gt;&lt;br /&gt; PREFIX text:  &amp;lt;http://jena.apache.org/text#&amp;gt;&lt;br /&gt;&lt;br /&gt; SELECT DISTINCT ?concept ?prefLabel ?hiddenLabel ?narrower ?related&lt;br /&gt; WHERE {&lt;br /&gt;  {&lt;br /&gt;    { ?concept text:query (&#039;telework&#039; 2) }&lt;br /&gt;   UNION&lt;br /&gt;    { ?tmpConcept text:query (&#039;telework&#039; 2) .&lt;br /&gt;     ?tmpConcept skos:exactMatch ?concept&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept text:query (&#039;telework&#039; 2) .&lt;br /&gt;     ?concept skos:narrower ?narrower&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?tmpConcept text:query (&#039;telework&#039; 2) .&lt;br /&gt;     ?tmpConcept skos:narrower ?concept&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept text:query (&#039;telework&#039; 2) .&lt;br /&gt;     ?concept skos:related ?related&lt;br /&gt;    }&lt;br /&gt;   UNION&lt;br /&gt;    { ?tmpConcept text:query (&#039;telework&#039; 2) .&lt;br /&gt;     ?tmpConcept skos:related ?concept&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt; ?concept rdf:type zbwext:Descriptor .&lt;br /&gt; {&lt;br /&gt;    { ?concept skos:prefLabel ?prefLabel }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:prefLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:altLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:hiddenLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:exactMatch/skos:prefLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:exactMatch/skos:altLabel ?label }&lt;br /&gt;   UNION&lt;br /&gt;    { ?concept skos:exactMatch/skos:hiddenLabel ?label }&lt;br /&gt;  }&lt;br /&gt; BIND (lcase(?label) AS ?hiddenLabel)&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The BIND statement returns all synonyms in lower case, which in combination with &quot;SELECT DISTINCT&quot; filters out semi-duplicate labels with different capitalization. The query makes use of the elegant new SPARQL 1.1 feature of property paths (&lt;code&gt;skos:exactMatch/skos:altLabel&lt;/code&gt;). It currently solely uses the skos:exactMatch mapping property, which is the only one declared as transitive, so the chains should be valid too. For the relationships &lt;em&gt;one&lt;/em&gt; thesaurus (STW) is used. As you may have spotted, the maximum number of returned concepts was increased in this query, because with multiple thesauri involved, more than one concept can exactly fit the query. (The reduction to STW descriptors follows only later on.) &lt;/p&gt;
&lt;p&gt;In this setting, STW serves as a backbone, which is enriched by synonyms from other thesauri. We chose this design because the introduction of multiple, partly overlapping concepts and hierarchies from other thesauri (focused on subject areas such as social sciences or agriculture) might leave users profoundly confused. On the other side, we would not expect much additional value for the field of economics, because it is covered by STW quite well.&lt;/p&gt;
&lt;h2&gt;Setting up the text index&lt;/h2&gt;
&lt;p&gt;To set up a text index with Fuseki, a service and dataset has to be created within the config.ttl file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;#service_xyz#&amp;gt; rdf:type fuseki:Service ;&lt;br /&gt;   rdfs:label           &quot;xyz TDB Service (R)&quot; ;&lt;br /&gt;   fuseki:name           &quot;xyz&quot; ;&lt;br /&gt;   fuseki:serviceQuery       &quot;query&quot; ;&lt;br /&gt;   fuseki:serviceQuery       &quot;sparql&quot; ;&lt;br /&gt;   fuseki:serviceReadGraphStore  &quot;data&quot; ;&lt;br /&gt;   fuseki:serviceReadGraphStore  &quot;get&quot; ;&lt;br /&gt;   fuseki:dataset      :xyz ;&lt;br /&gt;   .&lt;br /&gt; :xyz rdf:type   text:TextDataset ;&lt;br /&gt;   text:dataset &amp;lt;#xyzDb&amp;gt; ;&lt;br /&gt;   text:index  &amp;lt;#xyzIndex&amp;gt; ;&lt;br /&gt;   .&lt;br /&gt; &amp;lt;#xyzDb&amp;gt; rdf:type   tdb:DatasetTDB ;&lt;br /&gt;   tdb:location &quot;/path/to/tdb/files&quot; ;&lt;br /&gt;   tdb:unionDefaultGraph true ; # Optional&lt;br /&gt;   .&lt;br /&gt; &amp;lt;#xyzIndex&amp;gt; a text:TextIndexLucene ;&lt;br /&gt;   text:directory &amp;lt;file:/path/to/lucene/files&amp;gt; ;&lt;br /&gt;   text:entityMap &amp;lt;#entMap&amp;gt; ;&lt;br /&gt;   .&lt;br /&gt; &amp;lt;#entMap&amp;gt; a text:EntityMap ;&lt;br /&gt;   text:entityField   &quot;uri&quot; ;&lt;br /&gt;   text:defaultField  &quot;text&quot; ; # Must be defined in the text:map&lt;br /&gt;  text:map (&lt;br /&gt;      [ text:field &quot;text&quot; ; text:predicate skos:prefLabel ]&lt;br /&gt;      [ text:field &quot;text&quot; ; text:predicate skos:altLabel ]&lt;br /&gt;      [ text:field &quot;text&quot; ; text:predicate skos:hiddenLabel ]&lt;br /&gt;      ) .&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Basicly, this defines locations for the database (&lt;a href=&quot;http://jena.apache.org/documentation/tdb/&quot;&gt;Jena TDB&lt;/a&gt;) and index files. The entMap statement contains the text indexing logic. The properties to be indexed are listed and mapped to a index prefix. In our case, we just use one default index (&quot;text&quot;) for all properties.&lt;/p&gt;
&lt;h2&gt;Maintaining database and index&lt;/h2&gt;
&lt;p&gt;Fuseki supports SPARQL update, and so the simplest way to manage database and index is to just use the HTTP interface to load the data. This creates or updates the database and index files. For our use case, we however preferred to define the datastore as read-only (as in the config given above), and to rely on command line calls like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; java -cp $FUSEKI_HOME/fuseki-server.jar tdb.tdbloader --tdb=config_file data_file&lt;br /&gt; java -cp $FUSEKI_HOME/fuseki-server.jar jena.textindexer --desc=config_file&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The documentation points out one caveat: Index entries are added, but not deleted, when then the RDF data is modified. This can be &lt;a href=&quot;http://jena.apache.org/documentation/query/text-query.html#deletion-of-indexed-entities&quot;&gt;worked arround&lt;/a&gt;, or, in cases of larger changes, the index can just be rebuilt.&lt;/p&gt;
&lt;p&gt;Just as a side note: As an alternative to building Lucene indexes as described here, Fuseki supports the use of externally defined and maintained Solr indexes. This should allow for all kinds of neat tricks, but is currently sparsely documented.&lt;/p&gt;
&lt;h2&gt;Practical use&lt;/h2&gt;
&lt;p&gt;The web service backed based on Fuseki and Jena Text as described above is available at &lt;a href=&quot;zbw.eu/beta/econ-ws&quot;&gt;zbw.eu/beta/econ-ws&lt;/a&gt;, and is supported by documentation and executable examples. The integration into an application can be done server-side, in the applications backend. Or it can also be accomplished client-side by pulling together the synonyms in a search string (for Google, this could be &quot;term a&quot; OR &quot;term a&quot; OR ...), putting it into the search box, and executing the search, just through Javascript on the page.&lt;/p&gt;
&lt;p&gt;Have a look at ZBW&#039;s &lt;a href=&quot;http://econstor.eu&quot;&gt;EconStor&lt;/a&gt; digital repository of papers in economics, where the service is in production use. Just try &lt;a title=&quot;EconStor search for &#039;telework&#039;&quot; href=&quot;http://econstor.eu/dspace/simple-search?langselector=en&amp;amp;query=telework&amp;amp;submit=Go%20&quot;&gt;this URL&lt;/a&gt;. You will notice a short delay, after which search suggestions from STW thesaurus are displayed. And when you click at one of these, a search is executed with all the synonyms filled into the search box. We don&#039;t have yet enough data for an analysis of response times, but we very seldom see more than half a second - which is fast enough for the current application -, and the vast majority of responses takes less than 100 ms (on commonplace hardware).&lt;/p&gt;
&lt;p&gt;For sure, the algorithms described here and their implementation as SPARQL queries may be subject to critical discussion or tuning efforts. I&#039;d be happy to receive your feedback. A SPARQL endpoint with the STW dataset and the according text index is publicly available at &lt;a href=&quot;http://zbw.eu/beta/sparql&quot;&gt;http://zbw.eu/beta/sparql&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Footnote&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1) The service has existed since 2009. Till recently it was based on the &lt;a href=&quot;http://code.google.com/p/sparqlite&quot;&gt;SPARQLite &lt;/a&gt;implementation by Alistair Miles, Graham Kline and others. SPARQLite was Jena-based too, designed for scalability, quality-of-service and reliability (even in case of DOS attacks), and had the then recent &lt;a href=&quot;http://jena.apache.org/documentation/larq/&quot;&gt;LARQ &lt;/a&gt;(Lucene + ARQ) module integrated. It thus allowed an early implementation of the algorithms described here - hence the query code was much uglier than now with Jena Text. The development of SPARQLite was discontinued, however, in 2010.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-lproject field-type-entityreference field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;schema:about dc:subject&quot;&gt;&lt;a href=&quot;/labs/en/project/econ-ws&quot;&gt;Web Services for Economics&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Wed, 07 Aug 2013 07:35:40 +0000</pubDate>
 <dc:creator>Joachim Neubert</dc:creator>
 <guid isPermaLink="false">30 at //zbw.eu/labs</guid>
</item>
<item>
 <title>Automatic Indexing: ZBW Indexer</title>
 <link>//zbw.eu/labs/en/project/zbw-indexer</link>
 <description>&lt;!--
THIS FILE IS NOT USED AND IS HERE AS A STARTING POINT FOR CUSTOMIZATION ONLY.
See http://api.drupal.org/api/function/theme_field/7 for details.
After copying this file to your theme&#039;s folder and customizing it, remove this
HTML comment.
--&gt;
&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
          &lt;div class=&quot;field-item even&quot; property=&quot;schema:articleBody schema:description content:encoded dc:description&quot;&gt;&lt;p&gt;Applying automatic methods of indexing makes analyzing and structuring of electronic content much easier and faster. This is why we are in the process of testing a statistics-based automatic indexing method. By means of our STW Thesaurus for Economics, the ZBW Indexer generates possible keywords from any economic text. (The demo is not functional any more).&lt;/p&gt;
&lt;/div&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;tr class=&quot;field field-name-title-field field-type-text field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Name:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:name doap:name dc:title&quot;&gt;Automatic Indexing: ZBW Indexer&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-shortdesc field-type-text field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Short Description:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:summary doap:shortdesc&quot;&gt;Automatic indexing of scientific texts in Economics&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-project-thumb2 field-type-image field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Project thumbnail:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/labs/en/project/zbw-indexer&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;//zbw.eu/labs/sites/default/files/styles/project_thumb/public/project_thumb/annot_viewer_thumbnail.jpg?itok=LvD0NaCD&quot; width=&quot;100&quot; height=&quot;78&quot; alt=&quot;Indexing thumbnail&quot; title=&quot;Indexing thumbnail&quot; /&gt;&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-dbpedia-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Categories:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; rel=&quot;schema:about dc:subject doap:category&quot;&gt;&lt;a href=&quot;/labs/en/tag/automatic-indexing&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Automatic indexing&lt;/a&gt;&lt;/span&gt; &amp;#160; 
          &lt;span class=&quot;field-item odd&quot; rel=&quot;schema:about dc:subject doap:category&quot;&gt;&lt;a href=&quot;/labs/en/tag/thesaurus&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Thesaurus&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-created field-type-date field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Created:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:startDate doap:created dc:created&quot; datatype=&quot;xsd:gYearMonth&quot;&gt;&lt;span class=&quot;date-display-single&quot; property=&quot;schema:startDate doap:created dc:created&quot; datatype=&quot;xsd:gYearMonth&quot; content=&quot;2012-02-01T00:00:00+01:00&quot;&gt;2012-02&lt;/span&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-finished field-type-date field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Finished:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:endDate&quot; datatype=&quot;xsd:gYearMonth&quot;&gt;&lt;span class=&quot;date-display-single&quot; property=&quot;schema:endDate&quot; datatype=&quot;xsd:gYearMonth&quot; content=&quot;2012-04-01T00:00:00+02:00&quot;&gt;2012-04&lt;/span&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-project-status field-type-taxonomy-term-reference field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Project Status:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/labs/en/taxonomy/term/52&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Experimental&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;ul class=&quot;links inline&quot;&gt;&lt;li class=&quot;de first last&quot;&gt;&lt;a href=&quot;/labs/de/project/zbw-indexer&quot; class=&quot;language-link&quot; xml:lang=&quot;de&quot;&gt;Deutsch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
 <pubDate>Fri, 12 Apr 2013 15:21:19 +0000</pubDate>
 <dc:creator>bst-admin</dc:creator>
 <guid isPermaLink="false">27 at //zbw.eu/labs</guid>
</item>
<item>
 <title>Economics Taxonomies in Drupal</title>
 <link>//zbw.eu/labs/en/project/econ-taxonomies</link>
 <description>&lt;!--
THIS FILE IS NOT USED AND IS HERE AS A STARTING POINT FOR CUSTOMIZATION ONLY.
See http://api.drupal.org/api/function/theme_field/7 for details.
After copying this file to your theme&#039;s folder and customizing it, remove this
HTML comment.
--&gt;
&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
          &lt;div class=&quot;field-item even&quot; property=&quot;schema:articleBody schema:description content:encoded dc:description&quot;&gt;&lt;p&gt;The Drupal economics_taxonomies module can be used in Drupal installations to gain access to well established vocabularies for economics over the web. Economics contents curated in Drupal (journal articles, blog entries, etc.) can be indexed using terms from this vocabularies, without a need to install them locally.&lt;/p&gt;
&lt;p&gt;The module uses the &lt;a href=&quot;http://drupal.org/project/web_taxonomy&quot;&gt;Web Taxonomy&lt;/a&gt;, another Drupal module, to integrate these vocabularies as taxonomies into Drupal. Other than the core taxonomy module, Web Taxonomy records IDs (normally URIs) of terms, and thus allows an update from the taxonomy source. The plugin architecture of Web Taxonomy module allows building other modules to add data sources/vocabularies. The only prerequisite is that the sources provide a web services interface.&lt;/p&gt;
&lt;p&gt;Based on &lt;a href=&quot;http://zbw.eu/labs/project/econ_ws&quot;&gt;Web Services for Economics&lt;/a&gt;, Economics Taxonomies implements such plugins. It currently is in sandbox state and supports&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://zbw.eu/stw&quot; rel=&quot;nofollow&quot;&gt;STW Thesaurus for Economics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Scholars from economics and neighboring fields, a subset of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Personennamendatei&quot; rel=&quot;nofollow&quot;&gt;German personal name authority file (part of GND)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;and allows for linking to the respective resources. Since Drupal publishes these links in RDFa, it makes a Drupal site part of the large &lt;a href=&quot;http://lod-cloud.net/versions/2011-09-19/lod-cloud_colored.png&quot;&gt;LOD cloud&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
      &lt;/div&gt;
&lt;/div&gt;
&lt;tr class=&quot;field field-name-title-field field-type-text field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Name:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:name doap:name dc:title&quot;&gt;Economics Taxonomies in Drupal&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-shortdesc field-type-text field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Short Description:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:summary doap:shortdesc&quot;&gt;Making Web Services for Economics available as Drupal Web Taxonomies&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-homepage field-type-link-field field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Homepage:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; rel=&quot;schema:url doap:homepage&quot;&gt;&lt;a href=&quot;http://drupal.org/sandbox/jneubert/1447918&quot;&gt;http://drupal.org/sandbox/jneubert/1447918&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-gitrepository field-type-link-field field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Git Repository:&amp;#160;&lt;/td&gt;
    &lt;td rel=&quot;doap:repository&quot; class=&quot;field-items&quot;&gt;
    &lt;div about=&quot;[_:repos]&quot; typeof=&quot;doap:GitRepository&quot;&gt;
              &lt;div class=&quot;field-item even&quot; rel=&quot;doap:location&quot;&gt;&lt;a href=&quot;http://git.drupal.org/sandbox/jneubert/1447918.git&quot;&gt;http://git.drupal.org/sandbox/jneubert/1447918.git&lt;/a&gt;&lt;/div&gt;
          &lt;/div&gt;
  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-developer field-type-entityreference field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Developer:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; rel=&quot;schema:author doap:developer dc:creator&quot;&gt;Joachim Neubert&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-project-thumb2 field-type-image field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Project thumbnail:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/labs/en/project/econ-taxonomies&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;//zbw.eu/labs/sites/default/files/styles/project_thumb/public/project_thumb/econ_taxonomies_thumbnail_0.jpg?itok=mdtKE2cb&quot; width=&quot;100&quot; height=&quot;78&quot; alt=&quot;Econ Taxonomies thumbnail&quot; title=&quot;Econ Taxonomies thumbnail&quot; /&gt;&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-dbpedia-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Categories:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; rel=&quot;schema:about dc:subject doap:category&quot;&gt;&lt;a href=&quot;/labs/en/tag/electronic-publishing&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Electronic publishing&lt;/a&gt;&lt;/span&gt; &amp;#160; 
          &lt;span class=&quot;field-item odd&quot; rel=&quot;schema:about dc:subject doap:category&quot;&gt;&lt;a href=&quot;/labs/en/tag/drupal&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Drupal&lt;/a&gt;&lt;/span&gt; &amp;#160; 
          &lt;span class=&quot;field-item even&quot; rel=&quot;schema:about dc:subject doap:category&quot;&gt;&lt;a href=&quot;/labs/en/tag/thesaurus&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Thesaurus&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-created field-type-date field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Created:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot; property=&quot;schema:startDate doap:created dc:created&quot; datatype=&quot;xsd:gYearMonth&quot;&gt;&lt;span class=&quot;date-display-single&quot; property=&quot;schema:startDate doap:created dc:created&quot; datatype=&quot;xsd:gYearMonth&quot; content=&quot;2012-02-01T00:00:00+01:00&quot;&gt;2012-02&lt;/span&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;field field-name-field-project-status field-type-taxonomy-term-reference field-label-above&quot;&gt;
      &lt;td class=&quot;field-label&quot;&gt;Project Status:&amp;#160;&lt;/td&gt;
    &lt;td class=&quot;field-items&quot;&gt;
          &lt;span class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/labs/en/taxonomy/term/52&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;Experimental&lt;/a&gt;&lt;/span&gt; &amp;#160; 
      &lt;/td&gt;
&lt;/tr&gt;
&lt;ul class=&quot;links inline&quot;&gt;&lt;li class=&quot;de first last&quot;&gt;&lt;a href=&quot;/labs/de/project/econ-taxonomies&quot; class=&quot;language-link&quot; xml:lang=&quot;de&quot;&gt;Deutsch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
 <pubDate>Mon, 13 Feb 2012 12:33:18 +0000</pubDate>
 <dc:creator>Joachim Neubert</dc:creator>
 <guid isPermaLink="false">29 at //zbw.eu/labs</guid>
</item>
</channel>
</rss>
