Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modellierung geographische Koordinaten #1

Open
nichtich opened this issue Sep 12, 2024 · 12 comments
Open

Modellierung geographische Koordinaten #1

nichtich opened this issue Sep 12, 2024 · 12 comments

Comments

@nichtich
Copy link
Contributor

nichtich commented Sep 12, 2024

In https://graph.nfdi4objects.net/collection/9 werden Koordinaten so modelliert:

PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX n4oc: <https://graph.nfdi4objects.net/collection/>

SELECT * FROM n4oc:9 WHERE {
  ?place geo:hasGeometry [ geo:asWKT ?wkt ].
}

Beispielwert: POINT(-6.254558 53.340408)

In CRM gibt es E94_Space_Primitive (früher E47_Spatial_Coordinates). Allerdings ist unklar, welches Format die vermutlich mit P3_has_note angegebenen Werte haben. CRM allein ist hier nicht ausreichend.

In RDF gibt es außerdem das einfache Geo-Vokabular mit der Klasse Point und den Properties latitude, longitude, und altitude aus dem WGS84-Referenzsystem.

Die beste Variante für geographische Informationen in RDF ist anscheinend GeoSPARQL zumal es Mappings von/nach WKT, GeoJSON u.A. gibt (JSKOS verwendet GeoJSON). Zu klären ist noch, wie eine Genauigkeit für absichtlich ungenau gemachte Daten angegeben werden kann.

Koordinaten in Wikibase werden mit folgenden Propertie angegeben, die sollten ebenfalls unterstützt werden:

  • The wikibase:geoLongitude within the coordinate node retrieves the longitude value.
  • The wikibase:geoLatitude within a coordinate node retrieves the latitude value.
  • The wikibase:geoGlobe within a coordinate node retrieves the globe object. For coordinates on earth it will be Earth (Q2).
  • The wikibase:geoPrecision within a coordinate node retrieves the precision of the coordinate values, measured in degrees. Multiply by 111000 to convert to meters.
@florianthiery
Copy link
Member

Für Geo-Sachen bitte GeoSPARQL 1.1 des OGC verwenden: https://docs.ogc.org/is/22-047r1/22-047r1.html

@nichtich
Copy link
Contributor Author

In DANTE haben wir GeoJSON und zur Darstellung in Webanwendungen wird ebenfalls GeoJSON verwendet (allerdings erweitert im Precision, auch für den Zoom-Level). Im Property-Graph wollen wir GeoSPARQL. Irgendwie müssen wir das zusammenbringen und festlegen, wie das ganze in CRM passt (vielleicht E94_Space_Primitive für geo:Geometry verwenden?)

@florianthiery
Copy link
Member

hast du da ne Idee für uns @situx

@florianthiery
Copy link
Member

E94 als Subklasse von geo:Geometry wäre glaube ich nen guter Kompromiss und dann im reinen CRM eben E94 nehmen

@florianthiery
Copy link
Member

florianthiery commented Sep 13, 2024

Müssen aber auch https://www.cidoc-crm.org/crmgeo/sites/default/files/CRMgeo1_2.pdf mit reinnehmen...

@nichtich da auf Seite 30 ff. steht was

jetzte Version leider von 2015 .... https://www.cidoc-crm.org/crmgeo/fm_releases

@nfdi4objects nfdi4objects deleted a comment from florianthiery Sep 13, 2024
@nfdi4objects nfdi4objects deleted a comment from florianthiery Sep 13, 2024
@nichtich
Copy link
Contributor Author

Ich denke folgendes Verfahren ist praktikabel, da es auch in Wikidata ähnlich gehandhabt wird:

In gelieferten Daten können können leider ganz verschiedene Arten vorkommen, wie Koordinaten angegeben sind (GeoSPARQL, Basic Geo (WGS84 lat/long) Vocabulary, WKT, GeoJSON, CRMgeo...)

Wir müssen festlegen, welche davon wir unterstützen und alle unterstützen Formate auf eine Form bringen. Ich schlage folgende vor:

Alle Koordinaten werden auf Instanzen der CRM-Klasse E94 Space Primitive abgebildet, die genau ein Statement mit der Property geo:asWKT (und ggf. redundant daraus erzeugt geo:asGeoJSON), Bei Punktkoordinaten gibt es zusätzlich die Eigenschaften wikibase:geoLongitude, wikibase:geoLatitude und optional wikibase:geoPrecision.

@situx
Copy link

situx commented Sep 13, 2024

Bitte denkt auch daran ob ihr unterschiedliche Koordinatenreferenzsysteme unterstützen wollt. Manche Literale unterstützen nur das Weltkoordinatensystem

@nichtich
Copy link
Contributor Author

nichtich commented Sep 13, 2024

Von CRMgeo gibt es eine neuere Version: https://cidoc-crm.org/extensions/crmgeo/ - dort ist E94 Space Primitive nur am Rande erwähnt, siehe SP6 Declarative Place, eine Unterklasse von E54 Place, deren Sinn mir nicht ganz einleuchtet

So ähnlich würde vermutlich der Ort des Wracks der Titanic in CRM in RDF ausgedrückt werden:

?titanticPlace a crm:E54_Place ;  # oder crmgeo:SP6 Declarative Place - kommt aufs Gleiche heraus
  crm:P168_place_is_defined_by [
    a crm:E94_Space_Primitive ; # = crm:E47_Spatial_Coordinates (deprecated)
    crm:P3_has_note "POINT (-49.946944 41.7325 -3803)" ;
    crm:P2_has_type wd:Q4018860  # WKT
  ] .

Ich gehe allerdings stark davon aus, dass statt WKT auch zahlreiche andere Syntax-Varianten vorkommen wie zum Beispiel "41.7325°N 49.9469°E -3803m" (ISO 6709).

Und so in GeoSPARQL

?titanticPlace a geo:Feature ;
  geo:hasGeometry [
    a geo:Geometry ;
    geo:asWKT "POINT (-49.946944 41.7325 -3803)"
  ] .

Und so in JSKOS

{
  "type": ["http://www.cidoc-crm.org/cidoc-crm/E54_Place"],
  "location": {
    "type": "Point",
    "coordinates": [-49.946944, 41.7325, -3803]
  }
}

Und so im Property Graph (Cypher). Dort sind nur allerdings nur point, polygon und line nutzbar:

CREATE (:E54_Place {point:point({latitude: -49.946944, longitude: 41.7325, height: -3803})

Und so vielleicht im Property Graph (PG Format, das unterstützt keine geographischen Datentypen):

titanticPlace :E54_Place lat:-49.946944 lon:41.7325 -3803 alt:-3803

@florianthiery
Copy link
Member

florianthiery commented Sep 13, 2024

Dann sind mir doch da GeoSPARQL und JSKOS eindeutig lieber... und wenn da irgendwo noch ein :asGeoJSON rumliegt sind glaube ich alle zufrieden (sofern es in WGS84 ist...).

=> geht sogar in GeoSPARQL: https://docs.ogc.org/is/22-047r1/22-047r1.html#_property_geoasgeojson

?titanticPlace a geo:Feature ;
  geo:hasGeometry [
    a geo:Geometry ;
    geo:asgeoJSON "{"type": "Point","coordinates": [-49.946944,41.7325,-3803]}"^^geo:geoJSONLiteral
  ] .

@nichtich
Copy link
Contributor Author

nichtich commented Sep 13, 2024

@florianthiery Ich würde nur aus deinen Daten geo:hasGeometry auf das allgemeinere crm:P168_place_is_defined_by mappen und geo:Feature und crmgeo:SP6_Declarative_Place auf crm:E54_Place. Dagegen würde crm:E94_Space_Primitive zu geo:Geometry, also:

?titanticPlace a crm:E54_Place ;
  crm:P168_place_is_defined_by [
    a geo:Geometry ;
    geo:asgeoJSON '{"type": "Point","coordinates": [-49.946944,41.7325,-3803]}' ;
    geo:asWKT "POINT (-49.946944 41.7325 -3803)"
  ] .

@florianthiery
Copy link
Member

florianthiery commented Sep 13, 2024

klingt für mich zumindest nach ner versständlichen und sauberen Lösung. Aber CIDOC für Geodaten ist echt net schön...

@nichtich ich versuch das nach dem CM mal in die LEIZA LADO Ontology ein reinzubringen, damit ich das auch net vergesse ;-)

@anja-gerber
Copy link
Member

Hier ist mal der aktuelle Entwicklungsstand von CRM Geo: https://gitlab.isl.ics.forth.gr/cidoc-crm/compatible-models/crmgeo/-/tree/v1.2_crm7.1.2_preparation/1.2.

@nichtich nichtich transferred this issue from nfdi4objects/n4o-graph Oct 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants