uncefact / spec-jsonld

Exposing the UN/CEFACT vocabulary as web semantics
https://service.unece.org/trade/uncefact/vocabulary/uncefact/
13 stars 5 forks source link

deprecate/map UNCEFACT geospatial stuff in favor of OGC GeoSPARQL #54

Closed VladimirAlexiev closed 2 years ago

VladimirAlexiev commented 2 years ago

(Continuing https://github.com/uncefact/vocab/issues/5#issuecomment-1026404130)

OGC is a stronger authority on geographic information than UNCEFACT, so it would be better to defer to OGC GeoSPARQL classes and props

What are all of the UNCEFACT classes and props related to geospatial?

uncefact:Circle , uncefact:GeographicalMultiCurve , uncefact:GeographicalPoint , uncefact:GeographicalMultiSurface , uncefact:GeographicalGrid , uncefact:GeographicalMultiPoint , uncefact:Polygon , uncefact:LinearRing , uncefact:GeographicalLine , uncefact:GeographicalSurface

Props?

VladimirAlexiev commented 2 years ago

As @nissimsan says, we can only deprecate not delete, eg

uncefact:Circle a rdfs:Class; owl:deprecated true;
  skos:scopeNote "Deprecated in favor of OGC GeoSPARQL geometries".

We should also map, eg

uncefact:Polygon a rdfs:Class; owl:deprecated true;
  skos:scopeNote "Deprecated in favor of OGC GeoSPARQL geometries";
  dct:isReplacedBy sf:Polygon.

The new draft spec is https://opengeospatial.github.io/ogc-geosparql/geosparql11/spec.html and adds serializations GeoJSON, KML, DGGS but it will be some time before implementations pick up.

@nicholascar, @dr-shorthair could you review my prev comments and help with mapping?

nissimsan commented 2 years ago

@VladimirAlexiev, we are discussing this on the call now. It is not the role of this project to interfere with the semantics. However, the two actions we will take are:

onthebreeze commented 2 years ago

This is an issue for the UNCEFACT business domains / vocabulary management. I suggest y

nicholascar commented 2 years ago

Please note that GeoSPARQL 1.1 now contains a better explanation of the Simple Features geometry types classes (https://opengeospatial.github.io/ogc-geosparql/geosparql11/spec.html#_geometry_class_hierarchy) and an annex listing alignments with other ontologies (https://opengeospatial.github.io/ogc-geosparql/geosparql11/spec.html#_annex_e_alignments_informative).

For the classes listed above, I suspect these mapping might be useful:

UNCEFACT Class Mapping GeoSPARQL Simple Features Class
uncefact:Polygon owl:equivalentClass sf:Polygon
uncefact:LinearRing owl:equivalentClass sf:LinearRing

Assuming that there is nothing really different between a 'Point' and a 'GeographicalPoint' (I don't know UNCEFACT) then:

UNCEFACT Class Mapping GeoSPARQL Simple Features Class
uncefact:GeographicalPoint owl:equivalentClass sf:Point
uncefact:GeographicalMultiPoint owl:equivalentClass sf:MultiPoint
uncefact:GeographicalLine owl:equivalentClass sf:Line
uncefact:GeographicalMultiCurve owl:equivalentClass sf:MultiCurve
uncefact:GeographicalSurface owl:equivalentClass sf:Surface
uncefact:GeographicalMultiSurface owl:equivalentClass sf:MultiSurface

I can find no mappings for the following

UNCEFACT Class Mapping GeoSPARQL Simple Features Class
uncefact:GeographicalGrid
uncefact:Circle

*NOTE:** having SF classes in GeoSPARQL doesn't do anything for you. GeoSPARQL functions operate on geometry literals, not RDF classes, so, if you want to calculate intersections with a GeoSPARQL engine, you need to make polygon, point etc literals like this:

:feature-x
    geo:hasGeometry [
        geo:asWKT "POLYGON ((...))"^^geo:wktLiteral ;
   ] ;
.

:feature-y
    geo:hasGeometry [
        geo:asWKT "POINT (...)"^^geo:wktLiteral ;
   ] ;
.

WKT, GML etc.

nissimsan commented 2 years ago

@nicholascar, awesome! This is a great format for this NDR section. I love it - thank you!

nissimsan commented 2 years ago

@nicholascar , I added a section about this now. https://github.com/uncefact/vocab/pull/75