Gedbas4all/API

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
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>