-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.html
61 lines (61 loc) · 4.41 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<p>
<img border="0" src="logos/hbz.png"/>
</p>
<p><div class="h1">hbz ♥ open source</div></p>
<p class="lead">The hbz library service centre (Hochschulbibliothekszentrum des Landes Nordrhein-Westfalen) is a service and development agency for library and information systems. We are a federal state authority under the Ministry of Culture and Science of the German state of North Rhine-Westphalia (NRW). We build software to create, transform and publish bibliographic data. We’re increasingly creating our systems as open source software on GitHub:
<a href="https://github.com/hbz">https://github.com/hbz</a>
</p>
<p>The source for this document is maintained at
<a href="https://github.com/hbz/hbz.github.com">https://github.com/hbz/hbz.github.com</a>
| Moved, previously on this page: <a href="lobid.html">Lobid-specific content</a>
</p>
<h1 id="common-architecture">Common architecture</h1>
<p>At hbz, we’re aiming to establish a common macro architecture to enable interoperability of data and application modules developed by different groups. The main idea of that macro architecture is to provide independently deployable, self-contained modules that communicate over HTTP.</p>
<h2 id="macro-architecture">Macro architecture</h2>
<p>The goal of the macro architecture is to provide a level of integration for heterogenous software components, written in different languages and using different technologies. Not all current components conform to the architecture, and not all are open source. For an overview, see the following diagram.</p>
<p>
<img style="width:750px" border="0" src="figures/macro.png"/>
</p>
<h3 id="data-module-specification">Data module specification</h3>
<p>Data modules provide a unified HTTP API to integrate into the hbz macro architecture:</p>
<dl>
<dt>Prefix</dt>
<dd>Data modules use a URL path prefix corresponding to their data set. They provide module documentation at the prefix root. For example, the
<code>organisations</code> data set uses the
<code>organisations/</code> path prefix, with routes like
<a href="https://lobid.org/organisations/search?q=Köln">organisations/search?q=Köln</a>, documented at
<a href="https://lobid.org/organisations">organisations/</a>.
<em>This allows us to use multiple modules under a single domain</em>.
</dd>
<dt>Get</dt>
<dd>Data modules support GET requests for direct access to an entity using an ID path segment:
<a href="https://lobid.org/organisations/DE-605">organisations/DE-605</a>.
<em>This provides URLs for every entity in our data modules</em>.
</dd>
<dt>Result</dt>
<dd>Data modules return
<code>application/json; charset=utf-8</code>. All entities in a single data module have the same format (type, schema). This allows API users to query what they get. For example, we can look at
<a href="https://lobid.org/organisations/DE-2297">organisations/DE-2297</a> to create a query like
<a href="https://lobid.org/organisations/search?q=location.address.addressLocality:Berlin">q=location.address.addressLocality:Berlin</a>.
<em>This makes the supported queries discoverable.</em>
</dd>
<dt>Query</dt>
<dd>Data modules support GET requests with a
<code>q</code> query parameter that can be used for simple full text queries:
<a href="https://lobid.org/organisations/search?q=Köln">q=Köln</a>, and for querying specific fields:
<a href="https://lobid.org/organisations/search?q=name:Landesarchiv+Berlin">q=name:Landesarchiv+Berlin</a>. Fields can be nested:
<a href="https://lobid.org/organisations/search?q=location.address.postalCode:50667">q=location.address.postalCode:50667</a>.
<em>This provides a generic query mechanism with full access to the specifics of the data set.</em>
</dd>
</dl>
<h2 id="micro-architecture">Micro architecture</h2>
<p>The micro architecture of the individual modules is not part of the organisation-wide macro architecture.</p>
<p>For a sample micro architecture, see the <a href="lobid.html">Lobid</a> micro architecture (which uses Metafacture for data transformations) below.</p>
</body>
</html>