LD.LEO

Aus LeipzigWiki
Zur Navigation springenZur Suche springen

Home > Leipziger Initiative für Offene Daten

LEO - Leipziger Ontologie

Zur Herstellung von Interoperabilität auf Datenebene ist es erforderlich, sich über das dabei verwendete Vokabular zu einigen. Der relevante Abstimmungsprozess soll und wird im Rahmen der Leipziger Initiative für Offene Daten wenigstens für längerfristig persistente Datenbestände auf der apileipzig Liste verhandelt.


Noch auszuführende Änderungen

  • ld:hasAPIId aus Adressen.ttl, Orte.ttl, Personen.ttl entfernen (ersetzt durch API-Referenzen.ttl)
  • Adressen.ttl aufräumen: Strassenverezeichnis und Definition ld:Street herausnehmen
  • Traeger.ttl nach org:Organization transformieren

Vorgenommene Änderungen

  • Events, die nicht in Leipzig stattfinden, wurden entfernt, da sie nur Probleme bereiten. Müssten ggf. in weiterer Klasse ExterneEvents aufgenommen werden (Orte und Personen werden nicht in den Leipziger "Gelben Seiten" aufgenommen)
  • ld:hasMD5Sum für NEU-Events ergänzt. Berechnung der Checksumme geändert (HGG - 4.5.2013)
  • ical:sentBy foaf:Agent ergänzt. foaf:Agent Instanzen bei Traeger.ttl ergänzt (HGG - 24.03.2013)
  • ld:relatedBundle hat als rdfs:range nun ld:Ort oder ld:Traeger (HGG - 17.03.2013)
  • ical:contact als Literal für Kontaktinformation
  • Jugendhilfe.ttl angelegt, dorthin die URIs der Planungsräume übertragen und die Koordinatoren nachgetragen (HGG - 14.03.2013)
  • Strassenverzeichnis.ttl aus Adressen.ttl extrahiert (HGG - 10.03.2013)
  • WeitereAdressen.ttl enthält nun nur Instanzen von ld:ExterneAdresse (HGG - 10.03.2013)
  • WeitereAdressen.ttl angelegt und Namensraum-Präfix Data/ExterneAdressen eingearbeitet (HGG - 25.02.2013)
  • Personen nach foaf transformiert (HGG - 14.02.2013)
  • Namensraum 'cal:' nach standardmäßiger Benennung 'ical:' umgesetzt.
  • ld:Ortzusatz und ld:Ortszusatz ist obsolet zugunsten von ld:hasAddressAddendum (HGG - 24.01.2013)
  • ld:hasAdresse in ld:hasAddress umgewandelt, ld:hasAdresse ist damit obsolet (AN - 24.01.2013)

Fragen und Vorhaben in Diskussion

  • Tagging in Richtung Key-Value-Paare weiterentwickeln wie bei den OSM Map Features http://wiki.openstreetmap.org/wiki/Map_Features
    • Claus Stadler fragen, Muto-Ontologie anschauen
  • Infos zu einzelnen Einträgen, die sich nicht strukturiert abbilden lassen, werden dem Eintrag als rdfs:comment zugeordnet.

Zu klärende Fragen:

  • Sprechende Namen für Prädikate grundsätzlich(er) in Englisch.
  • Einbindung weiterer verbreiteter Vokabulare
  • Adressen:
    • Unterscheidung in Leipziger Adressen (Namens-Standard Data/Adresse/<plz>.<strasse>.<nr>) und externe Adressen (Namens-Standard Data/ExterneAdresse/<plz>.<ort>.<strasse>.<nr>)
    • weitere Literale ld:hasCity, ld:hasStreet bei externen Adressen
    • Gibt es eine sinnvolle externe Ontologie, die übernommen werden sollte? Wie löst das Open Street Map?
    • Straßen als Objekte außerhalb von Leipzig werden nicht eingeführt, im rdfs:label Straße und Hausnummer gemeinsam. ld:hasAddress als required bei ld:Ort auch außerhalb von Leipzig.
  • Namensraumpräfixe konsolidieren (Tags sind ldtags oder ldt, letzteres aber auch Träger)

URIs

Über URIs (Unique Resource Identifier) werden Ressourcen identifiziert, über die RDF-Tripel (also letztlich Sätze) in der Wissensbasis gesammelt werden. In jedem RDF-Tripel sind die ersten beiden Einträge (Subjekt und Prädikat) unbedingt URIs, der dritte (Objekt) ein Literal (String) oder ebenfalls eine URI. Während URIs für Subjekte und Objekte (also Knoten im entsprechenden RDF-Graphen) im Normalfall Objektinstanz-Bezeichner sind und damit eine realweltliche Entsprechung haben, sind URIs für Prädikate Begriffs-Bezeichner und gehören zum Modell.

URIs dienen zwar dazu, Informationen in maschinenlesbarer Form vorzuhalten, es ist aber eine gute Regel, sprechende Namen als Bezeichner zu vergeben. Jeder Bezeichner soll deshalb die Gestalt leipzig-data.de/Data/<Präfix>/EinfacherBezeichner haben, wobei EinfacherBezeichner den regulären Ausdruck [-A-Za-z0-9._] matcht und CamelCase-Notation sowie '_' (minor variation) und '.' (major variation) als Trennzeichen die Lesbarkeit weiter verbessern. Für verschiedene Typen von Objektinstanzen gibt es feinere Namensgebungsregeln.

Dazu werden Umlaute und andere Sonderzeichen nach fixID-Regeln in reine ASCII-Strings transformiert.

Alle Modellbegriffe haben Bezeichner mit dem Präfix Model, Objektinstanz-Bezeichner verteilen sich auf verschiedene paketspezifische Namensräume.

Pakete

Die Wissensbasis ist in Pakete unterteilt, in denen einzelne Teile der Wissensbasis nach Management-Gesichtspunkten zusammengefasst sind. Es gibt dabei zwei Ordnungsgesichtspunkte:

  • Es gibt Pakete mit Einträgen zu Subjekten, die zur selben Klasse gehören. Der Paketname ist dabei typischerweise ein Wort im Plural, der Namensraumpräfix der damit organisierten Instanzen dasselbe Wort im Singular.
Also etwa leipzig-data.de/Data/Orte/ für das Paket und leipzig-data.de/Data/Ort/ als Namenspräfix für Instanzen von ld:Ort, die in Orte.ttl aufgelistet sind.
  • Es gibt Pakete, in denen Informationen aus einer Quelle zusammengefasst sind. Hier steht typischerweise die Frage einer weiteren Datenintegration in die Gesamtsammlung im Vordergrund - die Daten sind zunächst im RDF-Format erfasst, die weitere (auch schrittweise) Integration in Leipzig Data ist zu diskutieren.
  • Adressen.ttl - Instanzen von ld:Adresse und ld:Strasse
    • HGG 2013-03-10: Externe Adressen sind in WeitereAdressen.ttl ausgelagert und gehören nun zu einer eigenen Klasse ld:ExterneAdresse.
    • HGG 2013-01-17: Eine Reihe von URIs enthielten noch Sonderzeichen wie é. Das habe ich gefixt und außerdem eine Reihe von Prädikaten rausgenommen, die obsolet sind.
  • Angebote.ttl - Instanzen von ld:Angebot
  • APILeipzig-Referenzen.ttl - Referenzen von LeipzigData-URIs auf APILeipzig-IDs
    • enthält alle Sätze mit dem Prädikat ld:hasAPIRef, deren Wert ein ld:APIRef ist
  • Events.ttl - Instanzen von ld:Event. Verweildauer solcher Instanzen in den Daten drei Monate nach Veranstaltungsdatum.
  • GeoDaten.ttl - Geo-Koordinaten (Claus hat das über nominatim aus OSM extrahiert), WeitereGeoDaten.ttl (weitere Geodaten zu Einträgen, die nicht über nominatim gewonnen wurden), beides OSM-Lizenz
  • Jugendhilfe.ttl - Instanzen von ld:Planumgsraum und weitere Informationen aus dem Jugendhilfebereich
  • KontaktDaten.ttl - weitere nicht öffentliche Informationen zu Personen (nur im internen Repo)
  • Orte.ttl - Instanzen von ld:Ort
  • Projekte.ttl - Instanzen von ld:Projekt
  • Personen.ttl - Instanzen von foaf:Person
  • Stadtbezirke.ttl - Instanzen von ld:Stadtbezirk und Zuordnung zu ld:Planung
  • Strassenverzeichnis.ttl - Instanzen von ld:Street
  • StadtLeipzig-Referenzen.ttl - Referenzen von LeipzigData-URIs auf IDs in den Datenbeständen der Stadt Leipzig
    • enthält alle Sätze mit dem Prädikat ld:hasStadtRef, deren Wert ein ld:StadtRef ist
  • Tags.ttl - Instanzen von ld:Tag
  • Traeger.ttl - Instanzen von ld:Traeger, sind nach org:Organization und foaf:Agent zu transformieren

Namensräume und Klassen

Orte, Angebote, Projekte und Events sind Aktivitäten verschiedener Dauerhaftigkeit (Ort > Angebot > Projekt > Event). Die Frage der genauen Abgrenzung ist noch zu spezifizieren.

Verwendete Teil-Ontologien

ld = leipzig-data.de/Data/Model/ - alle relevanten Modellbegriffe (Klassen, Prädikate)

Allgemeine Prädikate:

  • owl:Thing rdfs:label Literal - Für Menschen verständliche Benennung. Wird vom Ontowiki in der Anzeige verwendet.
    • foaf:name rdfs:subPropertyOf rdfs:label
  • owl:Thing rdfs:comment Literal
  • owl:Thing ld:hasURL <URL>
  • owl:Thing ld:relatesTo owl:Thing - nicht weiter formal spezifizierte Zuordnung
  • ld:contactPerson foaf:Person - Ansprechpartner
    • rdfs:domain ld:Ort, ld:Angebot, ld:Projekt, ld:Traeger, ld:Event
  • ld:engagedPerson foaf:Person - weitere mit dem Angebot verbundene Person
    • rdfs:domain:ld:Ort, ld:Angebot, ld:Projekt, ld:Traeger
  • ld:hasAddress ld:Adresse oder ld:ExterneAdresse- Adresse des Angebots
    • rdfs:domain ld:Ort, ld:Angebot, ld:Projekt, ld:Traeger
  • ld:hasAddressAddendum Literal - Adresszusatz
    • rdfs:domain ld:Ort, ld:Angebot, ld:Projekt, ld:Traeger, ld:Event
  • ld:hasTag ld:Tag - Zuordnung des Angebots (Konsolidierung der literalen Werte von ld:Art und ld:Bereich)
    • rdfs:domain ld:Ort, ld:Angebot, ld:Projekt, ld:Traeger, ld:Event

Einzelne Klassen:

  • ld:Adresse (definiert in Adressen.ttl) Adressen in der Stadt Leipzig - URIs haben die Struktur Data/Adresse/<plz>.<strasse>.<nummer> mit Postleitzahl plz, strasse und Hausnummer nummer (incl. ggf. Zusatz).
    • Die standardisierten Adressen sind bis auf die Hausnummer aufgelöst. Weitere Informationen sind als Adresszusatz (ld:hasAddressAddendum) einzutragen.
    • ld:inStreet ld:Strasse verweist auf eine Strassen-URI im Straßenverzeichnis Leipzig.
    • Literale ld:hasHouseNumber (Hausnummer, ggf. mit Zusatz), ld:hasPostCode (PLZ)
    • Muss auch vokabularmäßig stärker mit Open Street Map vernetzt werden.
    • In Geo-Koordinaten.ttl (eigenes Repo unter OSM-Lizenz) sind den Adressen Geokoordinaten zugeordnet (ld:nearby <linkedgeodata.org/triplify/URI>; geo:lat xsd:double; geo:long xsd:double)
  • ld:Angebot (definiert in Angebote.ttl) - Angebot eines Trägers an einem Ort oder wie auch immer
    • ld:hasSupplier ld:Traeger - Träger
    • ld:hasTag ld:Tag - Zuordnung des Angebots (Konsolidierung der literalen Werte von ld:Art und ld:Bereich)
    • ld:relatedBundle ld:Ort oder ld:Traeger - Zuordnung zu Ort oder Träger (in ld:relatedTo umzubenennen)
    • Orga-Literale ld:hasEmail, ld:hasFax, ld:hasTelefon (nach foaf: zu transformieren)
    • Inhalts-Literale (alle mehrfach möglich) ld:Art (obsolet), ld:Arbeitsformen, ld:Auszeichnungen (mehrfach), ld:Bereich (obsolet), ld:Finanzierung, ld:Hintergrund, ld:Kosten (mehrfach), ld:Kurzinformation (mehrfach), ld:Teilnahmebedingungen, ld:Zielgruppe, ld:Zielstellung
  • ld:APIRef (keine Definition, Typ tritt als rdfs:range von ld:hasAPIRef in API-Referenzen.ttl sowie Events.ttl auf) - URIs haben die Struktur leipzig-data.de/Data/APILeipzig/<prefix>.<nr> und beziehen sich auf die interne Bezeichnung der Objekte bei API Leipzig
    • Venue.<nr> - Referenz auf einen Ort
    • Host.<nr> - Referenz auf eine Person
    • Event.<nr> - Referenz auf ein Event (in Events.ttl)
  • ld:Event (definiert in Events.ttl) - einzelne Events, weiter zu spezifizieren
    • ld:contactPerson foaf:Person - Ansprechpartner für das Event
    • ical:contact Literal - Kontaktinformation als String
    • ical:description Literal - Beschreibung des Events
    • ical:location ld:Ort - Ort, an dem das Events stattfindet
    • ld:hasAddressAddendum Literal - genauere Bezeichnung innerhalb von ical:location
    • ld:hasMD5Sum String - MD5-Summe über DTSTART, SUMMARY und DESCRIPTION (ohne white spaces) eines von NEU übernommenen ical-Events, um dieses später zu identifizieren.
    • ical:summary Literal - kurze Beschreibung (max. 100 Zeichen) des Events
    • Literale: ical:dtstart, ical:dtend (xsd:date oder xsd:datetime)
    • ical:organizer ld:Ort oder ld:Traeger oder ld:NatuerlichePerson - Veranstalter des Events
    • ical:sentBy foaf:Agent - Quelle der Eventinformation
    • ld:hasTag ld:Tag - Tags für das Event
    • ld:zurReihe ld:Projekt oder ld:Angebot - Zuordnung zu einer Veranstaltungsreihe oder einem Angebot
    • Orga-Literale ld:hasAPIRef
    • Weitere Literale: ld:Kosten
  • ld:ExterneAdresse (definiert in WeitereAdressen.ttl) - URIs haben die Struktur Data/ExterneAdresse/<plz>.<ort>.<strasse>.<nummer>. Prädikate wie ld:Adresse, nur
    • weitere Literale ld:hasStreet (ersetzt ld:inStreet), ld:hasCity
    • Q: Können Geokoordinaten aus ld:hasCity, ld:hasPostCode, rdfs:label inferiert werden
  • ld:JuristischePerson - Namensschema ist noch festzulegen, derzeit ld:Traeger (in Traeger.ttl)
    • Eine juristische Person kann weiteren Klassen wie ld:Verein, ld:Unternehmen zugeordnet werden, soll aber immer auch foaf:Agent sein, um Inferenz längs Vererbungshierarchien zu vermeiden. URIs juristischer Personen haben die Gestalt Data/<OrgForm>/<name>, wobei <OrgForm> auf die Organisationsform hinweist. Damit soll diese Information perspektivisch verfeinert werden.
    • Derzeit sind dies ausschließlich Instanzen von ld:Traeger (aus Traeger.ttl), die aus der LD.Datenbasis importiert wurden. Die URIs dieser Instanzen müssen zügig bzgl. der OrgaForm weiter normiert werden, indem der allgemeine Präfix Traeger/ durch Verein/ Unternehmen/ StadtLeipzig/ UniLeipzig/ HTWK/ usw. ersetzt wird (macht Andreas).
    • Einige Instanzen von foaf:Agent angelegt mit Namenspräfix Agent/ (HGG - 24.03.2013)
    • Abzubilden auf org:Organization und foaf:Agent
  • ld:Ort (definiert in Orte.ttl) - längerfristig existierendes Bündel von Angeboten, das meist an einen Ort gebunden ist
    • ld:hasAnschrift Literal - Anschrift, Postfach oder so, wenn der Ort keine ld:Adresse hat (Beispiel: LSGM)
    • ld:hasSupplier ld:Traeger - Träger
    • ld:hasTag ld:Tag - Klassifizierung (Konsolidierung der literalen Werte von ld:Art und ld:Bereich)
    • ld:Langinformation ld:InfoRecord - Inforecord mit einer längeren (externen) Information zum Ort im XHTML-Format
    • Orga-Literale ld:hasEmail, ld:hasFax, ld:hasTelefon
    • Inhalts-Literale (alle mehrfach möglich) ld:Art (obsolet), ld:Arbeitsformen, ld:Auszeichnungen (mehrfach), ld:Bereich (obsolet), ld:Finanzierung, ld:Hintergrund, ld:Kosten (mehrfach), ld:Kurzinformation (mehrfach), ld:Leistungsangebot (mehrfach), ld:Oeffnungszeiten (mehrfach), ld:Teilnahmebedingungen, ld:Zielgruppe, ld:Zielstellung
Listen in der Leistungsbeschreibung der MINT-Broschüre von Lernen vor Ort werden in Mehrfacheinträge umgewandelt.
  • foaf:Person (definiert in Personen.ttl) - URIs haben typischerwise die Struktur Data/Person/<Nachname_Vorname> nach fixID-Transformation und enthalten öffentliche Informationen zu Personen. Weitergehende Informationen werden in KontaktDaten.ttl gesammelt und nicht veröffentlicht.
    • Literal foaf:name (statt rdfs:label)
    • Literale foaf:phone, foaf:mbox (nicht öffentlich)
    • org:memberOf ld:Traeger
    • ld:relatedTo URI (nicht öffentlich)
    • ld:hasAddress ld:Adresse (nicht öffentlich)
  • ld:PlanungsRaum (definiert in Stadtbezirke.ttl) - Planungsraum der Stadt Leipzig. Als URI wird Data/Planungsraum/<name> verwendet, wobei name der fixId-transformierte Name des Planungsraums ist.
    • Die Jugendhilfeplanung teilt die 63 Stadtbezirke der Stadt Leipzig in 7 Planungsräume ein.
  • ld:Projekt (definiert in Projekte.ttl) - Projekt an einem Ort oder innerhalb eines komplexeren Angebots
    • ld:hasSupplier ld:Traeger - Träger
    • ld:hasTag ld:Tag - Klassifizierung (Konsolidierung der literalen Werte von ld:Art und ld:Bereich)
    • ld:relatedBundle ld:Ort oder ld:Traeger - Zuordnung zu Ort oder Träger
    • Orga-Literale ld:hasEmail, ld:hasFax, ld:hasTelefon
    • Inhalts-Literale (alle mehrfach möglich) ld:Arbeitsformen, ld:Auszeichnungen (mehrfach), ld:Finanzierung, ld:Hintergrund, ld:Kosten (mehrfach), ld:Kurzinformation (mehrfach), ld:Leistungsangebot (mehrfach), ld:Oeffnungszeiten (mehrfach), ld:Teilnahmebedingungen, ld:Zielgruppe, ld:Zielstellung
  • ld:Stadtbezirk (definiert in Stadtbezirke.ttl) - Als URI wird Data/Stadtbezirk/<stadtbezirk> verwendet, wobei stadtbezirk der fixId-transformierte Name des Stadtbezirks ist.
    • ld:zuPlanungsRaum ld:PlanungsRaum - Zuordnung zu Planungsraum
  • ld:StadtRef (keine Definition, Typ tritt als rdfs:range von ld:hasStadtRef in StadtLeipzig-Referenzen.ttl auf) - URIs haben die Struktur leipzig-data.de/Data/StadtId/<prefix>.<nr>:
    • Street.<nr> - Nummer einer Straße im städtischen Stra0ßenverzeichnis (Quelle: API Leipzig)
    • Stadtbezirk.<nr> - Nummer eines Stadtbezirks im städtischen Ortsteilverzeichnis (Quelle: API Leipzig)
  • ld:Strasse - (definiert in Adressen.ttl) Als URI wird typischerweise Data/Strasse/<strasse> verwendet, wobei strasse der fixId-transformierte Straßenname ist und Mehrwortnamen zu Strings ohne Leerzeichen zusammengezogen werden. Existiert der Straßenname mehrfach, wird strasse.stadtbezirk verwendet (das ist noch einzubauen).
  • ld:Tag - (definiert in Tags.ttl) Genormtes Schlagwort, um Zuordnung eines Angebots oder Orts zu klassifizieren.
    • Die genaue Behandlung dieser Strukturen muss noch diskutiert werden. Instanzen von ld:Tag dienen auf jeden Fall dazu, Tagwolken aufzubauen.
    • In Überarbeitung. Überlegungen, stattdessen ein key-value-System wie bei Open Streetmap zu verwenden. Kopplung mit der Muto-Ontologie ist zu untersuchen.
  • ld:Traeger (in Traeger.ttl) - (juristischer) Träger eines Angebots oder Orts, perspektivisch in foaf:Agent oder org:Organization umzubenennen, wenn Unterkategorien (siehe ld:JuristischePerson) eingearbeitet sind.
    • ld:hasSupplierNumber - Vereinsnummer lt. "Förderung Freie Träger 2011"
    • Literale: ld:hasEmail, ld:hasFax, ld:hasTelefon, ld:Hintergrund, ld:Kurzinformation