Gedbas4all/API

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
< Gedbas4all
Version vom 3. Dezember 2016, 06:48 Uhr von Jzedlitz (Diskussion • Beiträge)
(Unterschied) ← Nächstältere Version • aktuelle Version ansehen (Unterschied) • Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Der Austausch von Daten erfolgt bei gedbas4all mit Hilfe von RDF.

Hinzufügen von Informationen

Mit einem POST-Request an xml/write kann man Daten in Form von RDF-Dokumenten schreiben. Das sieht z.B. so aus:

<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://gedbas4all.genealogy.net/sw/'
xml:base='http://example.org/test#'>
  <Persona rdf:ID='persona3633' name='Winand Fleischhauer' />
  <Characteristic rdf:ID='p3633cName'>
    <part><rdf:Description><value>Winand</value><type rdf:resource='http://gedbas4all.genealogy.net/sw/characteristic/firstname' /></rdf:Description></part>
    <part><rdf:Description><value>Fleischhauer</value><type rdf:resource='http://gedbas4all.genealogy.net/sw/characteristic/familyname' /></rdf:Description></part>
  </Characteristic>
  <Event rdf:ID='event3633' place='Hasselbeck'>
    <gedcomDate>1830</gedcomDate>
    <type rdf:resource='http://gedbas4all.genealogy.net/sw/event/residence' />
  </Event>
  <Assertion rdf:ID='a3'>
    <project rdf:resource='http://gedbas4all.genealogy.net/project/addressbook' />
    <researcher rdf:resource='http://gedbas4all.genealogy.net/researcher/1234' />
    <published rdf:resource='http://gedbas4all.genealogy.net/sw/Publication#permanent' />
    <subject1 rdf:resource='#persona_3633' />
    <subject2 rdf:resource='#event3633' />
  </Assertion>
  <Assertion rdf:ID='a1'>
    <project rdf:resource='http://gedbas4all.genealogy.net/project/addressbook' />
    <researcher rdf:resource='http://gedbas4all.genealogy.net/researcher/1234' />
    <published rdf:resource='http://gedbas4all.genealogy.net/sw/Publication#permanent' />
    <subject1 rdf:resource='#persona3633' />
    <subject2 rdf:resource='#p3633cName' />
  </Assertion>
</rdf:RDF>

Als Antwort bekommt - RDF-konform - man eine Zuordnung von lokalen zu globalen IDs:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#">
  <owl:NamedIndividual rdf:about='http://example.org/test#persona3633'>
    <owl:sameAs rdf:resource='http://gedbas4all.genealogy.net/xml/persona/1453' />
  </owl:NamedIndividual>
  <owl:NamedIndividual rdf:about='http://example.org/test#p3633cName'>
    <owl:sameAs rdf:resource='http://gedbas4all.genealogy.net/xml/characteristic/2683' />
  </owl:NamedIndividual>
  <owl:NamedIndividual rdf:about='http://example.org/test#event3633'>
    <owl:sameAs rdf:resource='http://gedbas4all.genealogy.net/xml/event/8734' />
  </owl:NamedIndividual>
</rdf:RDF>

Kennungen (IDs)

Es gibt dabei zwei Arten von IDs:

  • global gültige IDs, die bereits in gedbas4all vorhanden sind - die stammen aus einem Namensraum, dessen URI mit http://gedbas4all.genealogy.net/ beginnt
  • nur für diese Übermittlung gültige IDs, die in gedbas4all globalen IDs zugeordnet werden. Das sind alle anderen URIs.

Authentifizierung

Für die Authentifizierung sind drei Möglichkeiten vorgesehen:

  • Authentifizierung einer Applikation, die vertrauenswürdig ist und Daten verschiedener Benutzer eintragen darf
  • Authentifizierung eines einzelnen Benutzers mit Hilfe einem CAS-Proxy Ticket. Alle Daten werden dabei diesem einem Benutzer geordnet.
  • Authentifizierung eines einzelnen Benutzers mit Hilfe von Benutzername und Passwort. Alle Daten werden dabei diesem einem Benutzer geordnet.
<g:UsernamePasswordAuthentication rdf:ID="auth">
  <g:username>user</g:username>
  <g:password>password</g:password>
</g:UsernamePasswordAuthentication>

<g:ProxyTicketAuthentication rdf:ID="auth">
  <g:proxyTicket>xyz</g:proxyTicket>
</g:ProxyTicketAuthentication>

<g:ProgramAuthentication rdf:ID="auth">
  <g:programName>program</g:programName>
  <g:programPassword>password</g:programPassword>
</g:ProgramAuthentication>

Abrufen von Informationen

Über einen GET-Request an sw/event/7829387 kann man die Daten eines Objekts abrufen. Zurückgeliefert wird ein Dokument wie dieses:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://gedbas4all.genealogy.net/sw/">
  <Event rdf:about="http://localhost:8508/gedbas4all/xml/event/7829387" place="Neumühlen-Dietrichsdorf">
    <type rdf:resource="http://gedbas4all.genealogy.net/sw/event/birth" />
    <date><rdf:Description>
        <calendar rdf:resource="http://gedbas4all.genealogy.net/sw/Calendar#gregorian" />
        <certainty rdf:resource="http://gedbas4all.genealogy.net/sw/Certainty#exact" />
        <certainty rdf:resource="http://gedbas4all.genealogy.net/sw/DateType#point" />
        <start><rdf:Description>
            <normalized>2413581</normalized>
            <datePart><rdf:Description><type rdf:resource="http://gedbas4all.genealogy.net/sw/date/year"/><value>1896</value></rdf:Description></datePart>
            <datePart><rdf:Description><type rdf:resource="http://gedbas4all.genealogy.net/sw/date/month" /><value>1</value></rdf:Description></datePart>
            <datePart><rdf:Description><type rdf:resource="http://gedbas4all.genealogy.net/sw/date/day" /><value>22</value></rdf:Description></datePart>
        </rdf:Description></start>
    </rdf:Description></date>
  </Event>
</rdf:RDF>