hbz / lobid-organisations

Transformation, web frontend, and API for lobid-organisations
http://lobid.org/organisations
Eclipse Public License 2.0
13 stars 3 forks source link

Add information on APIs #421

Closed acka47 closed 4 years ago

acka47 commented 5 years ago

Originated in a request by @donboern, followed up by this twitter thread and Jakob publishing a manual on how to add the data to the system.

By now there are several entries with information on PAIA, DAIA, SRU or OpenURL:

We will have to add this to the lobid-organisations JSON-LD. The documentation for the relevant field 009Q is at https://sigel.staatsbibliothek-berlin.de/vergabe/adressenformat/856/.

I will propose a solution for the test org example in a separate comment.

acka47 commented 5 years ago

Input field 009Q from the PicaPlus XML for the test org:

<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://homepage.de</ppxml:subf>
    <ppxml:subf id="z">A</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://opac.de</ppxml:subf>
    <ppxml:subf id="z">B</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://Fernleihe.de</ppxml:subf>
    <ppxml:subf id="z">C</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://Kontakt.de</ppxml:subf>
    <ppxml:subf id="z">D</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://wifi.de</ppxml:subf>
    <ppxml:subf id="z">E</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de</ppxml:subf>
    <ppxml:subf id="x">Weitere Informationen</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/openurl</ppxml:subf>
    <ppxml:subf id="x">OpenURL</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/daia</ppxml:subf>
    <ppxml:subf id="x">DAIA</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/paia</ppxml:subf>
    <ppxml:subf id="x">PAIA</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/sru</ppxml:subf>
    <ppxml:subf id="x">SRU</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>

009Q with codes A (Homepage) and B (OPAC/Katalog) in subfield zare already transformed to JSON-LD, see e.g. https://github.com/hbz/lobid-organisations/blob/21d224b40ad81639b7abe882aba423bc54886bf0/conf/morph-enriched.xml#L99-L100. C (Fernleihe), D (Kontaktformular), E (Wifi-Zugang) are currently not taken into account and we won't touch them in this issue as well.

This means, this ticket only deals with those objects that have code W in subfield z. Cutting out the rest, we get:

<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de</ppxml:subf>
    <ppxml:subf id="x">Weitere Informationen</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/openurl</ppxml:subf>
    <ppxml:subf id="x">OpenURL</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/daia</ppxml:subf>
    <ppxml:subf id="x">DAIA</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/paia</ppxml:subf>
    <ppxml:subf id="x">PAIA</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>
<ppxml:tag id="009Q" occ="">
    <ppxml:subf id="u">http://info-test.de/sru</ppxml:subf>
    <ppxml:subf id="x">SRU</ppxml:subf>
    <ppxml:subf id="z">W</ppxml:subf>
</ppxml:tag>

Here is my proposal, oriented on the OER World Map approach and the OER-Service-"Visitenkarte" (see draft spec):

{
   "id":"http://lobid.org/organisations/ZDB-Test2#!",
   "url":"http://homepage.de",
   "provides":"http://opac.de",
   "availableChannel":[
      {
         "type":[
            "ServiceChannel"
         ],
         "serviceType":"Weitere Informationen",
         "serviceUrl":"http://info-test.de"
      },
      {
         "type":[
            "ServiceChannel",
            "WebAPI"
         ],
         "serviceType":"OpenURL",
         "serviceUrl":"http://info-test.de/openurl"
      },
      {
         "type":[
            "ServiceChannel",
            "WebAPI"
         ],
         "serviceType":"DAIA",
         "serviceUrl":"http://info-test.de/daia"
      },
      {
         "type":[
            "ServiceChannel",
            "WebAPI"
         ],
         "serviceType":"PAIA",
         "serviceUrl":"http://info-test.de/paia"
      },
      {
         "type":[
            "ServiceChannel",
            "WebAPI"
         ],
         "serviceType":"SRU",
         "serviceUrl":"http://info-test.de/sru"
      }
   ]
}

Note that the type ~ServiceChannel~ WebAPI should only be added when the value in subfield x is one of SRU, DAIA, PAIA, OpenURL.

acka47 commented 4 years ago

@dr0i, maybe you want to take this over?