In Arbeit
Entwurf!
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 ))"^^geo:wktLiteral .
] .
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 .
] .