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) .