<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.0 20040830//EN" "journalpublishing.dtd">
<article article-type="research-article" xml:lang="EN" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id>2012004</journal-id>
<journal-title>LIBER QUARTERLY</journal-title>
<abbrev-journal-title>LIBER</abbrev-journal-title>
<issn>1435-5205</issn>
<issn pub-type="epub">2213-056X</issn>
<publisher>
<publisher-name>Igitur publishing</publisher-name>
<publisher-loc>Utrecht, The Netherlands</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">2012004</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject></subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Towards an Editable, Versionized LOD Service for Library Data</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Ostrowski</surname>
<given-names>Felix</given-names>
</name>
<aff>literarymachine.net, Germany <email>felix.ostrowski@gmail.com</email></aff>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Pohl</surname>
<given-names>Adrian</given-names>
</name>
<aff>North Rhine-Westphalian Library Service Center, hbz, Germany <email>pohl@hbz-nrw.de</email></aff>
</contrib>
</contrib-group>
<pub-date>
<month>02</month>
<year>2013</year>
</pub-date>
<volume>22</volume>
<issue>4</issue>
<fpage>310</fpage>
<lpage>330</lpage>
<page-range>310-330</page-range>
<ext-link ext-link-type="urn" xlink:href="http://persistent-identifier.nl/?identifier=URN:NBN:NL:UI:10-1-114290">URN:NBN:NL:UI:10-1-114290</ext-link>
<copyright-statement>Copyright 2012, The copyright of this article remains with the author</copyright-statement>
<copyright-year>2012</copyright-year>
<abstract>
<p>The Northrhine-Westphalian Library Service Center (hbz) launched its LOD service <italic>lobid.org</italic> in August 2010 and has since then continuously been improving the underlying conversion processes, data models and software. The present paper first explains the background and motivation for developing <italic>lobid.org</italic>. It then describes the underlying software framework <italic>Phresnel</italic> which is written in PHP and which provides presentation and editing capabilities of RDF data based on the Fresnel Display Vocabulary for RDF. The paper gives an overview of the current state of the Phresnel development and discusses the technical challenges encountered. Finally, possible prospects for further developing Phresnel are outlined.</p>
</abstract>
<kwd-group>
<title>Keywords</title>
<kwd>Linked Open Data</kwd>
<kwd>Web application development</kwd>
<kwd>Cataloguing</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1. Introduction</title>
<p>In the broader library world, Linked Open Data (LOD)<xref ref-type="fn" rid="fn1">1</xref> has gained a lot of attention over the last two years, with projects moving increasingly from theory to practice. The library domain is gearing more and more towards the technical and legal issues implied by this paradigm shift, with the announcement of &#x2018;A Bibliographic Framework for the Digital Age&#x2019; by the Library of Congress (<xref ref-type="bibr" rid="r10">Marcum &#x0026; Library of Congress, 2011</xref>) and the Conference of European National Librarians&#x2019; affirmation of open licensing for their data (<xref ref-type="bibr" rid="r8">Conference of European National Librarians, 2011</xref>) being only two examples.</p>
<p>Since 2009 the North Rhine-Westphalian Library Service Center (hbz) has been exploring Linked Open Data and Semantic Web technologies, where both the legal and the technological aspects of this ongoing paradigm change in information representation and provision. The hbz launched its LOD service <italic>lobid.org</italic> &#x2014; standing for &#x201C;Linking Open Bibliographic Data&#x201D; &#x2014; in August 2010 and since then has continuously been improving it.</p>
<p>The overall goal is to develop the underlying software framework so that its read/write services can be run, including a web presentation of the underlying RDF data and online forms to create, update and delete the underlying information represented in RDF (Resource Description Framework). To keep track of and to be able to revoke changes, the system should also fully versionize the underlying data structures. This paper explains its motivation (section 2) and describes the LOD service lobid.org (section 3), as these developments were initiated to improve the service. In section 4 the Fresnel Display Vocabulary for RDF is introduced which serves as a generic way to configure the presentation of RDF data. Section 5 explains Phresnel, a free software framework for presenting and editing RDF data based on Fresnel and PHP. Finally, in section 6 prospects for further developing Phresnel are listed.</p>
</sec>
<sec id="s2">
<title>2. Motivation and expected benefits</title>
<p>The hbz has been in the business of cooperative cataloguing for some time now, running a union catalogue since 1973. From this perspective, Linked Open Data provides a very interesting approach for distributed cooperative cataloguing in a web environment.</p>
<sec id="s3">
<title>2.1. Web integration</title>
<p>Adherence to international and cross-domain web standards for Linked Data means web integration of library data, from which the following benefits are expected in the long term:</p>
<list list-type="bullet">
<list-item>
<p><italic>Increased discoverability</italic>. Web-integrated data can easily be harvested by search engines and other discovery services.</p>
</list-item>
<list-item>
<p><italic>Multiple usability</italic>. RDF data stored in one data sink can easily be used as such by different services within the hbz and beyond.</p>
</list-item>
<list-item>
<p><italic>Interoperability and re-usability.</italic> Web standards facilitate reuse by reducing the need for conversion processes and post-processing.</p>
</list-item>
<list-item>
<p><italic>Flexibility</italic>. RDF and Triple Stores are very flexible regarding extensions and changes in the data model used.</p>
</list-item>
</list>
</sec>
<sec id="s4">
<title>2.2. Synergy effects</title>
<p>Following the best practices of the Linked Open Data community and working towards a standardization of the data produced by the different services within the hbz, return of investments in form of intra- and inter-organizational synergy effects are expected. Within the organization, we already see some effects on hbz projects reusing each others&#x2019; data. With LOD, this is possible in a straightforward way, whereas having to deal with proprietary interfaces and different formats often makes it quite labor-intensive for services to communicate effectively. Thus, standardization of services has the effect of liberating resources which then can be used for additional services or for improving existing services.</p>
</sec>
<sec id="s5">
<title>2.3. Less vendor dependencies</title>
<p>The provision of many library services depends on technology, and there only exist a few different vendors in the library business. Often organizations are depending on products by one or two vendors, with significant costs for switching to a different vendor or product. In other words, the lock-in effect is very strong in the library domain.</p>
<p>The utilization of Linked Open Data best practices improves this situation in two ways:</p>
<list list-type="order">
<list-item>
<p>Being able to easily get hold of your data in an open, cross-domain standard enables you to switch to another product with less effort.</p>
</list-item>
<list-item>
<p>With data being held in RDF rather than open but opaque formats like MARC, there will likely emerge many additional softwares of interest from other vendors. Growing competition leads to improved products and/or decreasing prices.</p>
</list-item>
</list>
</sec>
</sec>
<sec id="s6">
<title>3. lobid.org</title>
<p>In August 2010 the hbz launched its experimental Linked (Open) Data service lobid.org<xref ref-type="fn" rid="fn2">2</xref>, which is comprised of two services: a &#x201C;catalogue&#x201D; of bibliographic resources and holding information (lobid-resources<xref ref-type="fn" rid="fn3">3</xref>) and an index of libraries and related organizations (lobid-organizations<xref ref-type="fn" rid="fn4">4</xref>). lobid.org fully employs Linked Data principles as well as &#x2014; whenever possible &#x2014; Open Data principles.</p>
<p>Since 2010 the two lobid.org services and their underlying data have been continuously improved:</p>
<list list-type="bullet">
<list-item>
<p>Information is being extended by adding more fields from legacy data to the mapping and by revising vocabulary and property choices.</p>
</list-item>
<list-item>
<p>Context is being added by linking resources to other Linked Data sets.</p>
</list-item>
</list>
<p>Interaction options for end users are being improved, e.g. by a search engine interface and by aligning the user interface of both sub-services (see 5).</p>
<p><xref ref-type="fig" rid="fig1">Figure 1</xref> gives an overview over the currently employed technology stack, data sources and conversion processes. As a triple store lobid.org employs Garlik&#x2019;s 4store<xref ref-type="fn" rid="fn5">5</xref> for full-text indexing and elasticsearch<xref ref-type="fn" rid="fn6">6</xref> for searching. The web front end runs on an Apache server and is generated by the Phresnel framework described in more detail below.</p>
<fig id="fig1">
<label>Fig. 1:</label>
<caption><p>lobid.org technology stack.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig1.jpg"/>
</fig>
<p>As one can see, lobid.org is currently almost entirely based on legacy data dumps from existing systems that are converted to RDF using custom tools. The resulting RDF data are enriched with links to other datasets in the LOD cloud. Some external LOD datasets are also indexed into the triple store: currently these are the ontologies used within lobid.org as well as the German national authority file <italic>Gemeinsame Normdatei</italic> (GND)<xref ref-type="fn" rid="fn7">7</xref> provided by the German National library. Until now, no possibilities exist for manually adding and editing the RDF data, e.g. to add new information (commonly called &#x2018;cataloguing&#x2019;) or to correct mistakes.</p>
<sec id="s7">
<title>3.1. lobid organisations</title>
<p>When the hbz started to publish Linked Open Data, it became clear that the bibliographic records from the hbz union catalogue would just be the start. If you want to build useful services on top of Linked Open Data, you also need URIs for and descriptions of items, holding institutions and services. For example, a geo-based query which gives you back all items of a specific manifestation in a 5 km radius requires URIs for and RDF descriptions of at least three entities: There is a manifestation M that is exemplified by an item I that is held by organisation O. In the RDF serialization turtle it reads as illustrated in <xref ref-type="fig" rid="fig2">Figure 2</xref>.</p>
<fig id="fig2">
<label>Fig. 2:</label>
<caption><p>RDF example (turtle) relating manifestation, item and holding organization.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig2.jpg"/>
</fig>
<p>The corresponding graph looks as in <xref ref-type="fig" rid="fig3">Figure 3</xref>.</p>
<fig id="fig3">
<label>Fig. 3:</label>
<caption><p>Graph showing relations between manifestation, item and holding organization.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig3.jpg"/>
</fig>
<p>Since two years ago people and organizations wouldn&#x2019;t move very much if you asked them to provide Linked Open Data, the realization was made that one has to do things yourself. Thus, lobid.org was launched with lobid-organizations in July 2010 (<xref ref-type="bibr" rid="r13">Ostrowski, 2010</xref>).</p>
<p>The underlying data come from the German ISIL registry<xref ref-type="fn" rid="fn8">8</xref> and the MARC organization code database<xref ref-type="fn" rid="fn9">9</xref> maintained by the Library of Congress. By now, lobid.org has minted URIs for more than 40,000 institutions and provides basic RDF descriptions of them.<xref ref-type="fn" rid="fn10">10</xref> Currently there exists neither an openly available dump of the data nor is it openly licensed as we cannot decide on this, not having produced the data ourselves.</p>
<p><bold>Enrichments</bold></p>
<p>In addition to the data obtained from the mentioned data sources, new links to other datasets in the LOD cloud are created. By now, links to DBpedia and Wikipedia (<xref ref-type="bibr" rid="r6">Christoph, 2012d</xref>) and to GeoNames (<xref ref-type="bibr" rid="r3">Christoph, 2012a</xref>) have been added. Furthermore, organization descriptions are enriched with a QR code which contains contact information (ibid.). Also, based on the geo coordinates for most of the libraries, we show their location on Open Street Map<xref ref-type="fn" rid="fn11">11</xref> embedded in the web page.</p>
<p>An example web page for the German National Library &#x2013; generated from underlying RDF as described in 5.1 &#x2014; is illustrated in <xref ref-type="fig" rid="fig4">Figure 4</xref>.</p>
<fig id="fig4">
<label>Fig. 4:</label>
<caption><p>lobid.org webpage describing the German National Library.<xref ref-type="fn" rid="fn12">12</xref></p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig4.jpg"/>
</fig>
</sec>
<sec id="s9">
<title>3.2. lobid resources</title>
<p><italic>lobid-resources</italic> is basically the LOD interface for Open Data from the hbz union catalogue. It offers URIs for and descriptions of bibliographic resources like monographs and multi-volume works on a FRBR-manifestation level as well as URIs for and descriptions of corresponding items held by hbz member libraries. Also, journals and serials are included that cannot be comprised under the FRBR WEMI (work-expression-manifestation-item) model (<xref ref-type="bibr" rid="r14">Pohl, 2011</xref>). Information on FRBR expression or especially on work-level is planned to be integrated in the future.</p>
<p>Since the first main open data publication in March 2010 (<xref ref-type="bibr" rid="r11">North Rhine-Westphalian Library Service Center, 2010</xref>) gradually more and more data from this catalogue has been published as open data in agreement with cooperating libraries. As of August 2012, the dataset comprises approximately 16 Million records published under a Creative Commons Zero license<xref ref-type="fn" rid="fn13">13</xref>, which represents 85&#x0025; of the hbz union catalogue (<xref ref-type="bibr" rid="r7">Christoph, 2012e</xref>). Using custom conversion tools, the data are generated based on an XML dump from the hbz Aleph system. The resulting RDF data can be queried via a public SPARQL endpoint<xref ref-type="fn" rid="fn14">14</xref>, and a full data dump is also available for download<xref ref-type="fn" rid="fn15">15</xref>.</p>
<p><bold>Enrichments</bold></p>
<p>Because identifiers from the German-wide authority file for names, subject headings and corporate entities already existed in the legacy data, links to the Linked Data version of the <italic>Gemeinsame Normdatei</italic> (GND, first published in 2010) were easy to implement.</p>
<p>Existing language encodings were replaced by links to the ISO 639-2 Codes for the Representation of Names of Languages provided by the Library of Congress.<xref ref-type="fn" rid="fn16">16</xref></p>
<p>Also, links to other datasets that include bibliographic data were added step by step. Using simple matching algorithms for ISBN and title string in combination with some post processing based on simple heuristics, links to Dbpedia (<xref ref-type="bibr" rid="r4">Christoph, 2012b</xref>), Open Library (<xref ref-type="bibr" rid="r5">Christoph, 2012c</xref>) and Project Gutenberg were added to a subset of resources. These links provide some kind of work-level bundling of resources, enabling for instance mutual enrichment of bundled resources with subject headings, links etc.</p>
<p>In the future the hbz aims at enhancing the data even more by adding subject headings and classification as well as by providing more links to other datasets and to full texts online. A simple API will be developed to enable easy use by libraries who want to re-use these enrichments</p>
<p>An example resource description is depicted in <xref ref-type="fig" rid="fig5">Figure 5</xref>.</p>
<fig id="fig5">
<label>Fig. 5:</label>
<caption><p>Example bibliographic description in lobid.org with links to GND, Project Gutenberg (eBooks &#x0026; audio books), Open Library and DBpedia.<xref ref-type="fn" rid="fn17">17</xref></p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig5.jpg"/>
</fig>
</sec>
</sec>
<sec id="s10">
<title>4. Presenting RDF data using the Fresnel Display Vocabulary for RDF</title>
<sec id="s11">
<title>4.1. Rationale</title>
<p>In the beginning, the converted legacy data for bibliographic resources was exposed using Pubby, &#x201C;a Linked Data Frontend for SPARQL Endpoints&#x201D;<xref ref-type="fn" rid="fn18">18</xref>. While being very easy to set up, the resulting views &#x2014; and among those especially the human-readable HTML &#x2014; that were generated by Pubby exposed too much of the underlying technology. The organizations data on the other hand was presented using a custom SPARQL query, PHP scripts and some HTML-templates in order to, e.g. include a map in the HTML view. This provided more flexibility but was not easily adapted to data other than that about organizations since each content model needed a manually created query and corresponding template. Besides that, there was the idea to enable libraries to easily create RDFa<xref ref-type="fn" rid="fn19">19</xref> descriptions of their organizations. In order to do so, the need for a simple, intuitive editor arose. Instead of exposing the underlying RDF model to content-creators, a browser based HTML form was aimed at, providing a familiar environment for anybody acquainted with the Web.</p>
<p>With these requirements in the back of the head, the search for a schema language from which such a front-end could be derived began. When dealing with RDF data, RDF Schema (RDFS) or the Web Ontology Language (OWL) are the first candidates that spring to mind. Since ontologies expressed in these languages are usually designed to be application-independent, experiments in this direction were rather fruitless, because the resulting views were too generic to fulfil the requirements. Especially mixing classes and properties from several vocabularies in a concise and comprehensible way is nearly impossible. Luckily, the Fresnel Display Vocabulary for RDF came across. It is designed precisely to specify &#x201C;<italic>what</italic> information contained in an RDF graph should be presented and <italic>how</italic> this information should be presented&#x201D;<xref ref-type="fn" rid="fn20">20</xref> without interfering with the underlying ontologies. Similar to the ontology languages mentioned above, it is itself based on RDF, making it possible to stay within one data model all throughout the implementation.</p>
</sec>
<sec id="s12">
<title>4.2. Lenses</title>
<p>Fresnel <italic>lenses</italic> address the first aspect mentioned above, namely <italic>which</italic> data should be displayed. A single lens can be related to instances in several ways, the simplest possibility being a reference to its class (i.e. its rdf:type values) as demonstrated in <xref ref-type="fig" rid="fig6">Figure 6</xref>. For the selected instances, an ordered list of properties is supplied, which is very easy and readable in turtle notation. In order to include in the output data about a related entity, another lens may be referred to. In the example in <xref ref-type="fig" rid="fig6">Figure 6</xref>, the author&#x2019;s first and last name will be displayed in a document description and not only its URI as would be the case when listing dc:creator without referring to such a :person <italic>sublens</italic> as is done on the right hand side.</p>
<fig id="fig6">
<label>Fig. 6:</label>
<caption><p>Fresnel lenses and sublenses.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig6.jpg"/>
</fig>
<p>Applying the above lenses to an (imaginary) triple store should yield the triples in <xref ref-type="fig" rid="fig7">Figure 7</xref>, which should be displayed in that order:</p>
<fig id="fig7">
<label>Fig. 7:</label>
<caption><p>Data yielded by applying lenses.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig7.jpg"/>
</fig>
<p>All in all, Fresnel lenses allow for a very concise and declarative way to express which data to select and which order to display it in.</p>
</sec>
<sec id="s13">
<title>4.3. Formats</title>
<p>Fresnel <italic>formats</italic> deal with the second issue stated above: they express how the selected data should be displayed. Possibilities range from custom labels for properties that differ from the labels defined in an ontology, to styling hooks used to reference CSS classes. An example can be found in <xref ref-type="fig" rid="fig8">Figure 8</xref>.</p>
<fig id="fig8">
<label>Fig. 8:</label>
<caption><p>Formats for custom property labels and applicable CSS classes.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig8.jpg"/>
</fig>
<p>In a way similar to Fresnel lenses as a way to select and order data, the format vocabulary allows to configure the way that data is displayed in a declarative, application independent way.</p>
</sec>
</sec>
<sec id="s14">
<title>5. Phresnel &#x2013; Implementing Fresnel in PHP</title>
<sec id="s15">
<title>5.1. Alternatives</title>
<p>Several implementations of Fresnel already existed<xref ref-type="fn" rid="fn21">21</xref> when the development of Phresnel began. Most of them are written in Java and none is implemented in PHP, upon which the pre-Phresnel version of lobid.org was based. Stand-alone applications supporting Fresnel, such as IsaViz<xref ref-type="fn" rid="fn22">22</xref>, do not fulfil our requirement of providing a classical browser-based user interface. JFresnel<xref ref-type="fn" rid="fn23">23</xref> as a low-level Fresnel API is an interesting library to implement Java-based Fresnel-aware applications, but it does not deliver any application logic. Reusing our existing PHP web-application code &#x2014; such as request dispatching / URL routing &#x2014; would not have been possible, thus we decided against the usage of this library. Longwell<xref ref-type="fn" rid="fn24">24</xref> is geared towards faceted browsing, which is indeed an important aspect of a system such as lobid.org. LENA<xref ref-type="fn" rid="fn25">25</xref> is yet another Linked-data viewer, but both of these solutions do not provide the means to alter data. Also, in both cases the demos are offline and development appears to have stalled. There are further Linked-data front-ends for SPARQL endpoints, such as Pubby<xref ref-type="fn" rid="fn26">26</xref> and Elda<xref ref-type="fn" rid="fn27">27</xref>, but these do not use Fresnel and once again do not provide editing capabilities.</p>
<p>Thus, a new, PHP-based editing-aware framework dubbed &#x2018;Phresnel&#x2019;<xref ref-type="fn" rid="fn28">28</xref> was implemented as a proof-of-concept. Currently only a small subset of lens and format features is implemented in Phresnel, limited to those absolutely necessary to get the prototype up and running.</p>
</sec>
<sec id="s16">
<title>5.2. Displaying</title>
<p>In order to display data according to a Fresnel lens, the web application detects the lens to be used from the URL to which a GET request was issued, e.g. &#x201C;document&#x201D;. It then uses the Phresnel framework to generate a generic (X)HTML view (with embedded RDFa) of the requested data as shown in <xref ref-type="fig" rid="fig9">Figure 9</xref>. At this point it is assumed that an HTTP-303-redirect following the linked-data design pattern<xref ref-type="fn" rid="fn29">29</xref> has already occurred in a previous step.</p>
<fig id="fig9">
<label>Fig. 9:</label>
<caption><p>Phresnel generating (X)HTML views.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig9.jpg"/>
</fig>
<p>Internally, Phresnel uses the lens definitions to generate a series of SPARQL CONSTRUCT queries such as those depicted in <xref ref-type="fig" rid="fig10">Figure 10</xref> and then uses the lens and format definitions to order and style the resulting RDF.</p>
<fig id="fig10">
<label>Fig. 10:</label>
<caption><p>SPARQL CONSTRUCT queries generated by Phresnel.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig10.jpg"/>
</fig>
<p>Currently, only a hard-coded box model (<xref ref-type="bibr" rid="r2">Bizer, Lee, &#x0026; Pietriga, 2005</xref>) based on nested tables is available. The ordering and transformation to (X)HTML can obviously be skipped when a pure RDF representation is requested via content-negotiation.</p>
</sec>
<sec id="s17">
<title>5.3. Editing</title>
<p>When assembling an editing the view of a resource, the steps are very similar to those when requesting a simple display representation, as can be seen in <xref ref-type="fig" rid="fig11">Figure 11</xref>. But there is one major difference. When the RDF resulting from the SPARQL queries is transformed to an (X)HTML form, all literals are simply converted to text input elements. Unfortunately this would result in an awkward interface for those cases where links to other entities are expected, since the URIs of those entities would have to be looked up and typed in manually. This is unacceptable from a usability point of view.</p>
<fig id="fig11">
<label>Fig. 11:</label>
<caption><p>Phresnel generating (X)HTML Forms.</p></caption>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="Ostrowskifig11.jpg"/>
</fig>
<p>The current implementation solves this in an insufficient, but at least reasonably visually appealing way. Link targets, e.g. a list of possible authors in the above example, are displayed as drop-down lists populated from the triple store. Unfortunately this has two severe limitations: the list can easily get excessively long, and the entries in the list are limited to the own data source, making it hard to link to other sources on the web. For the future, it is planned to get around these limitations by means of auto-complete text-fields that are driven either by custom javascript-snippets for external data-sources or connected to the own search index discussed in the next section. At this point it should be noted again that while data can be edited using this web front-end, currently no work-flow for storing the resulting data is in place.</p>
</sec>
<sec id="s18">
<title>5.4. Search</title>
<p>While the Linked Data paradigm is great for navigation, search is vital to actually discover resources. Although SPARQL supports regular expressions<xref ref-type="fn" rid="fn30">30</xref> that can be used for search, this currently does not scale to the data volume of lobid.org. This is why the search for organizations<xref ref-type="fn" rid="fn31">31</xref> as well as the one for resources<xref ref-type="fn" rid="fn32">32</xref> on lobid.org is currently backed by an elasticsearch<xref ref-type="fn" rid="fn33">33</xref> index, accessed via a custom web application that provides a CQL interface. This concrete setup has historical reasons. The resource index has existed long before lobid.org and is used by several hbz services, and it was easiest to simply integrate the organization index into the same infrastructure.</p>
<p>Due to this construction, search results &#x2014; which are received as Atom feeds &#x2014; have a data structure that does not match the Fresnel lens definitions driving lobid.org. Hence, currently only the identifiers are extracted from the search result, which are used to construct the URI of the discovered resource, using Phresnel to then receive and format data as described above. This works fairly well and is much more efficient than using native SPARQL queries for fulltext search but suffers from the fact that after the resource has been identified the data about it has to be retrieved again, this time from the triple store. This is only one of the problems that will have to be tackled next.</p>
</sec>
</sec>
<sec id="s19">
<title>6. Prospects</title>
<p>The current proof-of-concept implementation for a read/write system for LOD-based library data uncovers interesting prospects for future data management. It is clear though that the efforts are still very much at the beginning. Further Phresnel developments will explore options in the following areas.</p>
<sec id="s20">
<title>6.1. Purely JavaScript based editing</title>
<p>Since the most important part of the editor &#x2014; the facility to look up resources and create links &#x2014; will need to be reworked for reasons mentioned above, it is considered to switch to an editor implementation based solely on RDFa and JavaScript in a way similar to create.js<xref ref-type="fn" rid="fn34">34</xref>, abandoning server-generated forms all together. This would not only create a more fluid experience for the user but would also reduce load on the server and provide a better separation of concerns between the front-end and the back-end.</p>
</sec>
<sec id="s21">
<title>6.2. Data production and maintenance</title>
<p>The results of editing data in the web front-end will have to become persistent. There are several non-trivial decisions that have to be made in this respect: in how many places should the data be stored (triple store, flat files, search index), how should the data be organized (named graphs (<xref ref-type="bibr" rid="r9">Dodds, 2009</xref>), &#x2026;), which provenance should be recorded, which authorization system should be used etc. Since an application like the one described in this paper naturally lives in a networked, decentralized environment, thought will also have to be put into a solution to inform other connected services about creation, updates and deletions of data.<xref ref-type="fn" rid="fn35">35</xref> One idea is to use a real-time, message based protocol such as IRC or XMPP.<xref ref-type="fn" rid="fn36">36</xref></p>
<p>Another important feature regarding data management is obviously identification and authentication of the agents acting upon the data. Instead of implementing such a system from scratch, it should be based upon a standard and ideally it should also be based on Linked Data principles. Because of this, the most likely approach to be used is WebID (<xref ref-type="bibr" rid="r15">Sporny, Inkster, Story, Harbulot, &#x0026; Bachmann-Gm&#x00FC;r, 2011</xref>) which uses FOAF descriptions of agents in conjunction with SSL certificates. This results in a secure distributed identification and authentication mechanism that is reasonably easy to be used by humans as well as by machines.</p>
</sec>
<sec id="s22">
<title>6.3. Versioning</title>
<p>Among the most important provenance information is a seamless history of changes made to the data, along with the identification of the agent (be it a system or person) that is responsible for these changes. While it is possible to express changes to RDF data as change-sets using an RDF<xref ref-type="fn" rid="fn37">37</xref> vocabulary, it is very likely that this is not the most efficient way to store them since the triple count in a store would explode (at least if it is the same store that holds the actual data). Alternatives that are on the map to be explored are using a versioning system that operates on flat files, such as git<xref ref-type="fn" rid="fn38">38</xref>, or using the versioning features of elasticsearch, which cannot only be considered as a search engine but also as a document store. In order to expose the different versions of the data in a standardized way, it is being considered to implement a Memento<xref ref-type="fn" rid="fn39">39</xref> interface for the selected versioning system.</p>
</sec>
<sec id="s23">
<title>6.4. JSON-LD in ES / Fresnel-based search engine indexing</title>
<p>The way in which search is currently tied into the application is not very generic, and it depends on external organizational and technical processes. Since look-up is a very important part of the system, a solution that ties in more naturally is preferred. Elasticsearch being schema-less should play nicely with RDF data. Since it indexes JSON data, an evaluation of several JSON-RDF-serialisations has begun. The most promising approach seems to be JSON-LD<xref ref-type="fn" rid="fn40">40</xref>, on the one hand because it is the one most likely to become a standard, and on the other hand because it structures data in a way that matches the key-value approach that elasticsearch is based upon. The Fresnel lenses driving the front-end could be reused to generate the JSON-structures for the index.</p>
</sec>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="r1"><nlm-citation citation-type="other"><comment>Berners-Lee, T. (2006, July 27). <italic>Linked Data - Design Issues</italic>. Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://www.w3.org/DesignIssues/LinkedData.html">http://www.w3.org/DesignIssues/LinkedData.html</ext-link></comment></nlm-citation></ref>
<ref id="r2"><nlm-citation citation-type="other"><comment>Bizer, C., Lee, R., &#x0026; Pietriga, E. (2005, June 30). <italic>Fresnel - Display Vocabulary for RDF [User Manual].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://www.w3.org/2005/04/fresnel-info/manual/">http://www.w3.org/2005/04/fresnel-info/manual/</ext-link></comment></nlm-citation></ref>
<ref id="r3"><nlm-citation citation-type="other"><comment>Christoph, P. (2012a, April 16). <italic>lobid.org news [Blog post].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://wiki1.hbz-nrw.de/x/mYQ7">http://wiki1.hbz-nrw.de/x/mYQ7</ext-link></comment></nlm-citation></ref>
<ref id="r4"><nlm-citation citation-type="other"><comment>Christoph, P. (2012b, May 3). <italic>First results using SILK to link to Dbpedia [Blog post].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="https://wiki1.hbz-nrw.de/x/mAJH">https://wiki1.hbz-nrw.de/x/mAJH</ext-link></comment></nlm-citation></ref>
<ref id="r5"><nlm-citation citation-type="other"><comment>Christoph, P. (2012c, May 23). <italic>1.2 M links to Open Library [Blog post].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://wiki1.hbz-nrw.de/x/I4BO">http://wiki1.hbz-nrw.de/x/I4BO</ext-link></comment></nlm-citation></ref>
<ref id="r6"><nlm-citation citation-type="other"><comment>Christoph, P. (2012d, June 11). <italic>lobid-organisation - new links to German Dbpedia [Blog post].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="https://wiki1.hbz-nrw.de/x/6IBO">https://wiki1.hbz-nrw.de/x/6IBO</ext-link></comment></nlm-citation></ref>
<ref id="r7"><nlm-citation citation-type="other"><comment>Christoph, P. (2012e, August 16). lobid-resources &#x2014; much more records, authority URIs dereferencable, provenance [Blog post]. Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://wiki1.hbz-nrw.de/x/cQJ5">http://wiki1.hbz-nrw.de/x/cQJ5</ext-link></comment></nlm-citation></ref>
<ref id="r8"><nlm-citation citation-type="other"><comment>Conference of European National Librarians (2011). <italic>Europe&#x2019;s national librarians support Open Data licensing [Press release].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://is.gd/cenl_announcement">http://is.gd/cenl_announcement</ext-link></comment></nlm-citation></ref>
<ref id="r9"><nlm-citation citation-type="other"><comment>Dodds, L. (2009, November 5). <italic>Managing RDF Using Named Graphs [Blog post].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://www.ldodds.com/blog/2009/11/managing-rdf-using-named-graphs/">http://www.ldodds.com/blog/2009/11/managing-rdf-using-named-graphs/</ext-link></comment></nlm-citation></ref>
<ref id="r10"><nlm-citation citation-type="other"><comment>Marcum, D., &#x0026; Library of Congress (2011, October 31). <italic>A Bibliographic Framework for the Digital Age.</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://www.loc.gov/marc/transition/news/framework-103111.html">http://www.loc.gov/marc/transition/news/framework-103111.html</ext-link></comment></nlm-citation></ref>
<ref id="r11"><nlm-citation citation-type="other"><comment>North Rhine-Westphalian Library Service Center (2010). <italic>March 2010: Releasing catalogue data: Cologne-based libraries to pioneer Open Data practices [Press Release].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://www.hbz-nrw.de/dokumentencenter/presse/pm/datenfreigabe_engl">http://www.hbz-nrw.de/dokumentencenter/presse/pm/datenfreigabe_engl</ext-link></comment></nlm-citation></ref>
<ref id="r12"><nlm-citation citation-type="other"><comment>Open Knowledge Foundation (2009). <italic>Open Knowledge Definition, v1.1</italic>. Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://opendefinition.org/okd/">http://opendefinition.org/okd/</ext-link></comment></nlm-citation></ref>
<ref id="r13"><nlm-citation citation-type="other"><comment>Ostrowski, F. (2010, July 20). <italic>Building a Linked Data based index of library institutions [Blog post].</italic> Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://blog.lobid.org/2010/07/building-linked-data-based-index-of.html">http://blog.lobid.org/2010/07/building-linked-data-based-index-of.html</ext-link></comment></nlm-citation></ref>
<ref id="r14"><nlm-citation citation-type="other"><comment>Pohl, A. (2011, October 17). <italic>Serials and FRBR [Blog post]</italic>. Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="https://wiki1.hbz-nrw.de/display/SEM/2011/10/17/Serials+and+FRBR">https://wiki1.hbz-nrw.de/display/SEM/2011/10/17/Serials+and+FRBR</ext-link></comment></nlm-citation></ref>
<ref id="r15"><nlm-citation citation-type="other"><comment>Sporny, M., Inkster, T., Story, H., Harbulot, B., &#x0026; Bachmann-Gm&#x00FC;r, R. (2011, December 12). <italic>WebID 1.0 - Web Identification and Discovery [W3C Editor&#x2019;s Draft]</italic>. Retrieved January 9, 2013, from <ext-link ext-link-type="uri" xlink:href="http://www.w3.org/2005/Incubator/webid/spec/">http://www.w3.org/2005/Incubator/webid/spec/</ext-link></comment></nlm-citation></ref>
</ref-list>
<sec>
<title>Notes</title>
<fn-group>
<fn id="fn1"><label>1</label><p>To clarify our notion of &#x201C;Linked Open Data&#x201D;: We call data &#x201C;Linked Data&#x201D; if it is published following the requirements in <xref ref-type="bibr" rid="r1">Berners-Lee (2006)</xref>. We call data &#x201C;Linked Open Data&#x201D; if the data additionally meets <xref ref-type="bibr" rid="r12">Open Knowledge Foundation (2009)</xref>.</p></fn>
<fn id="fn2"><label>2</label><p><ext-link ext-link-type="uri" xlink:href="http://lobid.org/">http://lobid.org/</ext-link>.</p></fn>
<fn id="fn3"><label>3</label><p><ext-link ext-link-type="uri" xlink:href="http://lobid.org/resource">http://lobid.org/resource</ext-link>.</p></fn>
<fn id="fn4"><label>4</label><p><ext-link ext-link-type="uri" xlink:href="http://lobid.org/organisation">http://lobid.org/organisation</ext-link>.</p></fn>
<fn id="fn5"><label>5</label><p><ext-link ext-link-type="uri" xlink:href="http://4store.org/">http://4store.org/</ext-link>.</p></fn>
<fn id="fn6"><label>6</label><p><ext-link ext-link-type="uri" xlink:href="http://www.elasticsearch.org/">http://www.elasticsearch.org/</ext-link>.</p></fn>
<fn id="fn7"><label>7</label><p>See the GND-entry on the Data Hub: <ext-link ext-link-type="uri" xlink:href="http://thedatahub.org/dataset/dnb-gemeinsame-normdatei">http://thedatahub.org/dataset/dnb-gemeinsame-normdatei</ext-link>.</p></fn>
<fn id="fn8"><label>8</label><p><ext-link ext-link-type="uri" xlink:href="http://dispatch.opac.d-nb.de/DB=1.1/DB=1.2/">http://dispatch.opac.d-nb.de/DB&#x003D;1.1/DB&#x003D;1.2/</ext-link>.</p></fn>
<fn id="fn9"><label>9</label><p><ext-link ext-link-type="uri" xlink:href="http://www.loc.gov/marc/organisations/">http://www.loc.gov/marc/organisations/</ext-link>.</p></fn>
<fn id="fn10"><label>10</label><p>To get an overview over the RDF properties used in lobid organizations see <ext-link ext-link-type="uri" xlink:href="http://lobid.org/dataset/organisation/properties.txt">http://lobid.org/dataset/organisation/properties.txt</ext-link>.</p></fn>
<fn id="fn11"><label>11</label><p><ext-link ext-link-type="uri" xlink:href="http://www.openstreetmap.org/">http://www.openstreetmap.org/</ext-link>.</p></fn>
<fn id="fn12"><label>12</label><p>Retrieved from <ext-link ext-link-type="uri" xlink:href="http://lobid.org/organisation/DE-101/about">http://lobid.org/organisation/DE-101/about</ext-link>.</p></fn>
<fn id="fn13"><label>13</label><p><ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/publicdomain/zero/1.0/">http://creativecommons.org/publicdomain/zero/1.0/</ext-link>.</p></fn>
<fn id="fn14"><label>14</label><p><ext-link ext-link-type="uri" xlink:href="http://lobid.org/sparql/">http://lobid.org/sparql/</ext-link>.</p></fn>
<fn id="fn15"><label>15</label><p>See the description at the Open Data registry the Data Hub: <ext-link ext-link-type="uri" xlink:href="http://thedatahub.org/dataset/lobid-resources">http://thedatahub.org/dataset/lobid-resources</ext-link>.</p></fn>
<fn id="fn16"><label>16</label><p><ext-link ext-link-type="uri" xlink:href="http://id.loc.gov/vocabulary/iso639-2.html">http://id.loc.gov/vocabulary/iso639-2.html</ext-link>.</p></fn>
<fn id="fn17"><label>17</label><p>Retrieved from <ext-link ext-link-type="uri" xlink:href="http://lobid.org/resource/HT002189125/about">http://lobid.org/resource/HT002189125/about</ext-link>.</p></fn>
<fn id="fn18"><label>18</label><p><ext-link ext-link-type="uri" xlink:href="http://www4.wiwiss.fu-berlin.de/pubby/">http://www4.wiwiss.fu-berlin.de/pubby/</ext-link>.</p></fn>
<fn id="fn19"><label>19</label><p>RDFa (or Resource Description Framework &#x2013; in &#x2013; attributes) is a W3C Recommendation that makes it possible to embed RDF statements in web documents.</p></fn>
<fn id="fn20"><label>20</label><p><ext-link ext-link-type="uri" xlink:href="http://www.w3.org/2005/04/fresnel-info/">http://www.w3.org/2005/04/fresnel-info/</ext-link>.</p></fn>
<fn id="fn21"><label>21</label><p><ext-link ext-link-type="uri" xlink:href="http://www.w3.org/2005/04/fresnel-info/#implementation">http://www.w3.org/2005/04/fresnel-info/&#x0023;implementation</ext-link>.</p></fn>
<fn id="fn22"><label>22</label><p><ext-link ext-link-type="uri" xlink:href="http://www.w3.org/2001/11/IsaViz/">http://www.w3.org/2001/11/IsaViz/</ext-link>.</p></fn>
<fn id="fn23"><label>23</label><p><ext-link ext-link-type="uri" xlink:href="http://jfresnel.gforge.inria.fr/">http://jfresnel.gforge.inria.fr/</ext-link>.</p></fn>
<fn id="fn24"><label>24</label><p><ext-link ext-link-type="uri" xlink:href="http://simile.mit.edu/wiki/Longwell">http://simile.mit.edu/wiki/Longwell</ext-link>.</p></fn>
<fn id="fn25"><label>25</label><p><ext-link ext-link-type="uri" xlink:href="http://www.uni-koblenz-landau.de/koblenz/fb4/institute/IFI/AGStaab/Research/systeme/lena">http://www.uni-koblenz-landau.de/koblenz/fb4/institute/IFI/AGStaab/Research/systeme/lena</ext-link>.</p></fn>
<fn id="fn26"><label>26</label><p><ext-link ext-link-type="uri" xlink:href="http://www4.wiwiss.fu-berlin.de/pubby/">http://www4.wiwiss.fu-berlin.de/pubby/</ext-link>.</p></fn>
<fn id="fn27"><label>27</label><p><ext-link ext-link-type="uri" xlink:href="http://elda.googlecode.com/hg/deliver-elda/src/main/docs/index.html">http://elda.googlecode.com/hg/deliver-elda/src/main/docs/index.html</ext-link>.</p></fn>
<fn id="fn28"><label>28</label><p><ext-link ext-link-type="uri" xlink:href="https://github.com/lobid/Phresnel">https://github.com/lobid/Phresnel</ext-link>.</p></fn>
<fn id="fn29"><label>29</label><p><ext-link ext-link-type="uri" xlink:href="http://www.w3.org/TR/cooluris/#r303gendocument">http://www.w3.org/TR/cooluris/&#x0023;r303gendocument</ext-link>.</p></fn>
<fn id="fn30"><label>30</label><p><ext-link ext-link-type="uri" xlink:href="http://www.w3.org/TR/rdf-sparql-query/#funcex-regex">http://www.w3.org/TR/rdf-sparql-query/&#x0023;funcex-regex</ext-link>.</p></fn>
<fn id="fn31"><label>31</label><p><ext-link ext-link-type="uri" xlink:href="http://lobid.org/organisation/search">http://lobid.org/organisation/search</ext-link>.</p></fn>
<fn id="fn32"><label>32</label><p><ext-link ext-link-type="uri" xlink:href="http://lobid.org/resource/search">http://lobid.org/resource/search</ext-link>.</p></fn>
<fn id="fn33"><label>33</label><p><ext-link ext-link-type="uri" xlink:href="http://www.elasticsearch.org/">http://www.elasticsearch.org/</ext-link>.</p></fn>
<fn id="fn34"><label>34</label><p><ext-link ext-link-type="uri" xlink:href="http://createjs.org/">http://createjs.org/</ext-link>.</p></fn>
<fn id="fn35"><label>35</label><p>An initiative for creating a synchronization standard for web content, called &#x201C;ResourceSync&#x201D;, is already underway at the NISO, see <ext-link ext-link-type="uri" xlink:href="http://www.niso.org/workrooms/resourcesync/">http://www.niso.org/workrooms/resourcesync/</ext-link>. The resulting standard would be quite relevant for this context.</p></fn>
<fn id="fn36"><label>36</label><p><ext-link ext-link-type="uri" xlink:href="http://xmpp.org/">http://xmpp.org/</ext-link>.</p></fn>
<fn id="fn37"><label>37</label><p><ext-link ext-link-type="uri" xlink:href="http://docs.api.talis.com/getting-started/changesets">http://docs.api.talis.com/getting-started/changesets</ext-link>.</p></fn>
<fn id="fn38"><label>38</label><p><ext-link ext-link-type="uri" xlink:href="http://git-scm.com/">http://git-scm.com/</ext-link>.</p></fn>
<fn id="fn39"><label>39</label><p><ext-link ext-link-type="uri" xlink:href="http://www.mementoweb.org/">http://www.mementoweb.org/</ext-link>.</p></fn>
<fn id="fn40"><label>40</label><p><ext-link ext-link-type="uri" xlink:href="http://json-ld.org/">http://json-ld.org/</ext-link>.</p></fn>
</fn-group>
</sec>
</back>
</article>