Geometry-vocab

From VoCamp Wiki
Jump to: navigation, search

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.

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