Geometry-vocab
From VoCamp Wiki
Contents
Considered Approaches[edit]
- Encode composite geometries explicitly in RDF.
- Everything is an RDF resource. Complex geometries are build from aggregation of simpler geometries
- Embed geometry representation details (e.g. the list of points contained in the exterior boundary of a polygon) into a RDF Literal (e.g. asGML, asWKT)
- Datatypes for each data forma.
- Retrieve different geometry representations through content negotiation. (e.g. GML, RDF, WKT, KML)
Our Proposal[edit]
- Simple Features Specification as base hyerarchy of geometry types.
- Feature and Geometry are separate objects.
- A feature can have multiple geometries, geometris are parameterized (e.g. reference system, dimension, resolution, temporal aspects)
- Different geometry representations are resolvable via content negotiation.
- Topological relations (as per RCC8) can be inferred or made explicit between geometries.
- UPDATE: vocabulary spec at http://geovocab.org/
Ontology[edit]
- Curve = rdf:List and rdf:first only Point and rdf:rest only' (Curve or rdf:nill)
- Polygon = exterior exactly 1 LinearRing
Future Work[edit]
- Direction of linear ring in Open Street Map.
- Support different coordinate systems. It might be possible to support multiple dimensions if we use a predicate similar to W3C Geo lat_long with coordinates separated by space for each point. It makes sense to have the coordinates grouped together for a same point.
Open Problems (and possible solutions)[edit]
- Should be possible to identify line segments by URIs?
- + OpenStreetmap makes use of it.
- + It would allow polygons to share edges, so polygons that are neighbours could be easily identified.
- - Additional complexity: Requires an additional class for aggregating a set of LineStrings into a LinearRing.
- - It would introduce 2 ways of structuring the same polygon in RDF. Therefore it would complicate querying.
Example[edit]
This is a simple example of how a polygon with a single hole can be represented using our vocabulary. Todo: Replace xxx with the appropriate namespace.
Feature level
lgd-rel:_151590 xxx:exposesGeometry lgd-geo:_151590_1 . (tags for the relation go here) lgd-way: _35375445 a lgdo:Lake ; xxx:hasGeometry lgd-way-geo: _35375445 . lgd-way: _35375444 a lgdo:Lake ; xxx:hasGeometry lgd-way-geo: _35375444 .
Geometry level
lgd-rel:_151590_1 xxx:hasGeometry lgd-rel-geo:_151590_1 . lgd-geo:_151590_1 a xxx:Polygon ; xxx:interior lgd-way-geo_35375444 ; xxx:exterior lgd-way-geo:_35375445 . lgd-way:_35375444 xxx:hasGeometry lgd-way-geo:_35375444 . xxx:hasGeometry lgd-way-geo:_151590_1 . lgd-rel-geo:_151590_1 a xxx:Polygon ; xxx:exterior lgd-way-geo:_35375445 ; xxx:interior: lgd-way-geo_35375444 . lgd-way-geo:_35375444 a xxx:LineRing; (list of points) . lgd-way-geo:_35375445 a xxx:LineRing; (list of points) .