In Arbeit
Entwurf!
Protkoll der Absprachen in der TelKo 27.03.2017:
- Die Verwendung der Property dcterms:spatial für die Angabe von geographischen Angaben soll so in die Erweiterten Empfehlungen aufgenommen werden.
- Als Alternative zur Property mit der die Koordinaten angegeben werden (geo:asWKT) bringt Adrian Pohl anhand eines Beispieles des hbz schema:geo ins Spiel. Für die hbz-Umsetzung hatte die komfortable Indexierbarkeit mit ElasticSearch einen hohen Stellenwert.
Die Unterschiede:- geo:asWKT ist stärker standardisiert. Der damit verwendete Datentyp geo:wktLiteral lässt z.B. auch Angaben nach verschiedenen Koordinatenbezugssysstemen zu (was man in der Praxis allerdings selten brauchen dürfte). Auch ist die Abbildung komplexer Geometrien möglich (z.B. "Fläche mit Löchern").
- schema macht keine harten Vorgaben, in welchem Format Koordinaten angegeben werden. Erwartet werden Werte der Klassen schema:GeoCoordinates oder schema:GeoShape.
- In den Erweiterten Empfehlungen soll ein Beispiel angegeben werden mit geo:asWKT und darauf hingewiesen werden, dass es auch andere Abbildungsmöglickeiten gibt, z.B. in schema.
Die folgende Ausführungen gründen sich in der aktuellen Umsetzung im LinkedData-Service der DNB.
Kurzfassung
Verknüpfe die Repräsentation der Karte mit der Repräsentation der Geometrie mit dcterms:spatial
. Beschreibe die Geometrien mit WKT (Well-known Text) und verwende dabei den Datentyp geo:asWKTLiteral
.
Beispiel:
@prefix sf: <http://www.opengis.net/ont/sf#> .
@prefix geo: <http://www.opengis.net/ont/geosparql#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix bibo: <http://purl.org/ontology/bibo/> .
<http://d-nb.info/1105671259> a bibo:Map , bibo:Document ;
dc:title "Sehkarte Ostfriesland, Jadebusen, Elbe" ;
dcterms:spatial [
a sf:Polygon ;
geo:asWKT "Polygon (( +006.666666 +054.166666, +006.666666 +053.500000, +008.666666 +053.500000, +008.666666 +054.166666, +006.666666 +054.166666 ))"^^https://github.com/hbz/lobid-resources/issues/130#issuecomment-265695150 .
] .
Längere Fassung
Unterscheidung zwischen Karte und Geometrie
Grundlegend unterscheidet man zwischen der Karte (bzw. der Kartenmanifestation) und der Geometrie, die die Karte umfasst. Die Geometrie – beschrieben durch die Koordinaten – ist eine eigenständige Ressource, die z. B. ein Punkt (falls der Kartenausschnitt durch nur ein Koordinatenpaar approximiert) oder ein Polygon (z. B. bei einem BoundingBox) sein kann. Die Kartenmanifestation verlinkt auf die Geometrie mit der Property dcterms:spatial, z. B. ex:eineKarte dcterms:spatial ex:eineGeometrie
.
Geometrien
Die Geometrie kann man auf viele verschiedene Arten beschreiben, die alle ihre Vor- und Nachteile haben. Zur Verwendung im (semantischen) Web bieten sich in erster Linie GeoJSON und WKT (Well-Known Text) an. GeoJSON hat den Vorteil, dass die Toolunterstützung v. a. für Benutzung in interaktiven Oberflächen sehr gut ist, aber auch den Nachteil, dass es (noch) keine Umsetzung für RDF gibt (also kein GeoJSON-LD), dass das Format relativ aufgebläht ist und auch dass es nur Koordinaten transportieren kann, die nach WGS84 erfasst sind, was für genaue Ortsangaben besonders in Europa problematisch sein kann, da die europäische Platte seit 1984 sich um etwa 60 cm verschoben hat. WKT hat zwar den Nachteil, dass es eine relativ komplexe Mikrosyntax ist, dafür ist die Unterstützung in gängigen Datenbanksystemen und Suchmaschinen gegeben, das Format ist relativ kompakt und es kann mit allen Arten von CRS (Coordinate Reference System) umgehen, Die DNB hat damals beschlossen, die Koordinaten in WKT zu transportieren.
Kurze Einführung in WKT
WKT ist eine Mikrosyntax zur Beschreibung von Geometrien. Als erstes kommt ein Schlüsselwort, das die Art der Geometrie beschreibt, z. B. POINT
, POLYGON
oder LINE
. Darauf folgt ein oder mehrere Koordinatenpaare, die die Geometrie beschreibt, z. B. POINT(0 0)
oder POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))
(Polygone können auch Löcher haben, die kommen dann in weitere geklammerte Bereiche innerhalb der äußeren Klammern: POLYGON((äußerer Ring)(Loch1)(Loch2))
). Die Koordinaten sind immer dezimale Koordinaten, nie Grad-Minute-Sekunde. In dem Datentyp wktLiteral
, die GeoSPARQL definiert, kann man vor dem Schlüsselwort auch in spitzen Klammern einen URI stellen, der das verwendete CRS definiert, z. B. <http://www.opengis.net/def/crs/EPSG/0/4326>Point(33.95 -83.38)
. Wenn kein CRS-URI spezifiziert wird, ist der Default <http://www.opengis.net/def/crs/OGC/1.3/CRS84>
, was WGS 84 mit Axenordung long-lat bedeutet.
Umsetzung der Geometrien im LinkedDat-Service der DNB
Für die Geometrien, die die Karten abbilden, werden keine eigenständigen Ressourcen gebildet, sondern sie werden als bNodes an die Karten gehängt. Für einige Kartentypen, z. B. Stadtpläne, erfassen wir nur die Mittelpunktkoordinaten, daher gibt es nur ein Koordinatenpaar. In den Fällen, wenn die Eckkoordinaten des Kartenausschnittes erfasst werden, sind mehrere Koordinatenpaare vorhanden, die als Polygon mit nur einem äußeren Ring beschrieben werden. Wir verwenden immer das default CRS (CRS84 = Koordinaten nach WGS84 mit Axenfolge long-lat).
Wichtig bei der Umsetzung ist die korrekte Axenfolge (longitud latitud) und dass bei Polygonen die Ringe geschlossen sein müssen (also müssen die ersten und die letzten Koordinatenpaare gleich sein) und dass die Koordinatenpaare des äußeren Rings gegen den Uhrzeigersinn gehen, währen die inneren Ringe im Uhrzeigersinn gehen.
Beispiel für Punktkoordinaten
@prefix sf: <http://www.opengis.net/ont/sf#> .
@prefix geo: <http://www.opengis.net/ont/geosparql#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix bibo: <http://purl.org/ontology/bibo/> .
<http://d-nb.info/1120048540> a bibo:Map , bibo:Document ;
dc:title "Brüssel" ;
dcterms:spatial [
a sf:Point ;
geo:asWKT "Point ( +004.348611 +050.850277 )"^^geo:wktLiteral .
] .
Beispiel für Eckkoordinaten
@prefix sf: <http://www.opengis.net/ont/sf#> .
@prefix geo: <http://www.opengis.net/ont/geosparql#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix bibo: <http://purl.org/ontology/bibo/> .
<http://d-nb.info/1105671259> a bibo:Map , bibo:Document ;
dc:title "Sehkarte Ostfriesland, Jadebusen, Elbe" ;
dcterms:spatial [
a sf:Polygon ;
geo:asWKT "Polygon (( +006.666666 +054.166666, +006.666666 +053.500000, +008.666666 +053.500000, +008.666666 +054.166666, +006.666666 +054.166666 ))"^^geo:wktLiteral .
] .