- From: Joshua Lieberman <jlieberman@tumblingwalls.com>
- Date: Wed, 18 May 2016 08:02:01 -0400
- To: "Little, Chris" <chris.little@metoffice.gov.uk>
- Cc: Andrea Perego <andrea.perego@jrc.ec.europa.eu>, Linda van den Brink <l.vandenbrink@geonovum.nl>, Rob Atkinson <rob@metalinkage.com.au>, Frans Knibbe <frans.knibbe@geodan.nl>, SDW WG Public List <public-sdw-wg@w3.org>, Andreas Harth <harth@kit.edu>
Best to consider this an alternative "asSVG" serialization, I would think.
--Josh
Sent from my iPhone
> On May 18, 2016, at 7:43 AM, Little, Chris <chris.little@metoffice.gov.uk> wrote:
>
> Andrea, Linda, and others,
>
> At the risk of complicating matters, is it worth testing this approach by considering another existing W3C language for describing polygons?
>
> SVG (versions 1, 1.1, 1.2, 2) currently has a well implemented mini-language for paths, which also supports turtle-like graphics, and various short cuts when there are lots of coordinates. There is also a polygon syntax, but this is more restrictive in that curved lines (not 'straight') not allowed.
>
> Chris
>
> -----Original Message-----
> From: Andrea Perego [mailto:andrea.perego@jrc.ec.europa.eu]
> Sent: Wednesday, May 18, 2016 11:29 AM
> To: Linda van den Brink
> Cc: Rob Atkinson; Joshua Lieberman; Frans Knibbe; SDW WG Public List; Andreas Harth
> Subject: Re: Good practice for publishing geometry of a thing as different geometry types?
>
> Hi, Linda.
>
> Please see my comments inline.
>
>> On 18/05/2016 9:50, Linda van den Brink wrote:
>> Hi all,
>>
>> Interesting thread this – we should indeed somehow turn this into
>> content for the BP.
>>
>> I think the consensus is at least that
>> - The geometry of a thing is a model of its real world shape.
>> - Geometries can be expressed in different ways.
>>
>> And perhaps
>> - Use a separate geometry for each way you want to express it
>> (although I don’t know if you all agree)
>>
>> We should describe the different levels of choice, i.e. as Josh described:
>>
>> Serialization of the geometry, i.e. WKT or GML (or …)
>
> Just to note again the approach used in GeoDCAT-AP for this:
>
> https://lists.w3.org/Archives/Public/public-sdw-wg/2015Jun/0167.html
>
> Basically, this is specified by using multiple instances of locn:geometry, with different literals:
>
> dct:Location locn:geometry
> "POLYGON((-180 90,180 90,180 -90,-180 -90,-180 90))"^^gsp:wktLiteral ,
> "<gml:Envelope
> srsName=\"http://www.opengis.net/def/crs/OGC/1.3/CRS84\"><gml:lowerCorner>-180
> -90</gml:lowerCorner><gml:upperCorner>180
> 90</gml:upperCorner></gml:Envelope>"^^gsp:gmlLiteral ,
>
> "{\"type\":\"Polygon\",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"urn:ogc:def:crs:OGC:1.3:CRS84\"}},\"coordinates\":[[[-180,90],[180,90],[180,-90],[-180,-90],[-180,90]]]}"^^ns0:json
> .
>
> Of course, this doesn't solve the issue of whether these are representations of the same geometry or of different geometries, but the GeoDCAT-AP WG saw this as a practical solution to provide users alternative geometry encodings.
>
>> CRS (I like Rob’s comparison with language choice)
>>
>> Realization on different scales/generalization levels
>>
>> Kind of model (boundary, centroid, …)
>>
>> And possible approaches for each of these. To which extend can content
>> negotiation be used?
>
> There's existing work we can refer to for this, especially in relation to the use of HTTP URIs for geometries. E.g.:
>
>
> 1. Ian Davis's work (dating back to 2003):
>
> http://vocab.org/placetime/2003/05/geopoint-wgs84-20030516
>
> The service is not maintained, as far as I can see, but a (no longer
> working) example is:
>
> http://placetime.com/geopoint/wgs84/X-126.817Y46.183
>
>
> 2. Ordnance Survey - e.g.:
>
> http://data.ordnancesurvey.co.uk/id/geometry/37256-10
>
> Geometries can be obtained in HTML, RDF/XML, Turtle, JSON. But I'm not
> sure whether HTTP conneg is supported here. In case, John Goodwin should
> be able to provide more details.
>
>
> 3. The work done in the framework of the GADM project, mentioned by
> Andreas (cc'ed) in Amersfoort:
>
> http://gadm.geovocab.org/
>
>
> 4. I have a conflict of interests here, but a few years ago I've also
> set up an experimental API for geometry URIs, able to serve geometries,
> in arbitrary CRSs, in different encodings / representations via conneg.
> Discussing with Andreas, the approach seems to be in line with the one
> used in GADM.
>
> There's not yet an online demo (but should be available soon). In any
> case, source code and documentation is on GH:
>
> https://github.com/andrea-perego/geoiri/wiki
>
> The supported formats are HTML, RDF (different serialisations), WKT,
> GML, KML, GeoJSON.
>
> An example of the RDF/XML output is here:
>
> https://github.com/andrea-perego/geoiri/blob/master/examples/point(0_0).rdf
>
> As you will be able to see, the different encodings / representations
> are modelled by linking them from the geometry with dct:hasFormat,
> whereas alternative RDF geometry representations are related with
> owl:sameAs:
>
> <http://some.site/geoiri/id/geometry/4326/point(0_0)>
> foaf:primaryTopicOf
> <http://some.site/geoiri/doc/geometry/4326/point(0_0)> ;
> rdfs:label "Geometry (WKT): POINT(0 0) - EPSG:4326 (WGS 84)"@en ;
> owl:sameAs
> <http://some.site/geoiri/id/geometry/4326/point(0_0)#geosparql> ;
> owl:sameAs <http://some.site/geoiri/id/geometry/4326/point(0_0)#wgs84> ;
> owl:sameAs
> <http://some.site/geoiri/id/geometry/4326/point(0_0)#schema.org> ;
> owl:sameAs <http://placetime.com/geopoint/wgs84/X0Y0> ;
> owl:sameAs <http://geohash.org/s0000000000000000000> ;
> owl:sameAs <geo:0,0;u=0;crs=wgs84> .
>
>
> Cheers,
>
> Andrea
>
>
>>
>>
>>
>> Linda
>>
>>
>>
>> *Van:*Rob Atkinson [mailto:rob@metalinkage.com.au]
>> *Verzonden:* vrijdag 13 mei 2016 02:44
>> *Aan:* Joshua Lieberman; Frans Knibbe
>> *CC:* SDW WG Public List
>> *Onderwerp:* Re: Good practice for publishing geometry of a thing as
>> different geometry types?
>>
>>
>>
>> Lots of overlapping concerns here - but one unified way of looking at
>> this is to look at the OpenWorld approach - if we assume an object can
>> have properties we dont know about (yet) then we have a basic model for
>> an object
>>
>> - object has an identifier and is a member of a set (a registration
>> viewpoint)
>>
>> We can then provide an addition view of that object, with a "named
>> collection of properties" using the Linked Data API semantics - but
>> basically what we do every time we define a FeatureType. so for
>> "spatial" features we have
>>
>> - object isa FeatureType has p1,p2,p3 etc
>>
>>
>>
>> This view can then be accessed in multiple serialisations (Content-type
>> negotiation) and potentially also language negotiation.
>>
>>
>>
>> So in principle one identifier maps to multiple resources. An we accept
>> that if we work on the web.
>>
>>
>>
>> but there is no reason to limit the number of views to 1 - and if we
>> accept the Web architecture that would be an inconsistent thing to do
>> anyway.
>>
>>
>>
>> So - you can have
>>
>>
>>
>> FeatureTypes with multiple geometry properties
>>
>>
>>
>> AND/OR
>>
>>
>>
>> Multiple FeatureTypes (e.g. simple features) bound to different geometry
>> models
>>
>>
>>
>> AND/OR
>>
>>
>>
>> content negotiation to access different encodings of a feature ( perhaps
>> CRS choice is analagous to language choice for text?)
>>
>>
>>
>> but you do probably end up with an architectural requirement to
>> advertise what views are available... :-)
>>
>>
>>
>> In summary, I recommend publishing multiple encodings using different
>> information models, but consistent under an OpenWorld interpretation -
>> i.e. you should not have different models using the same property
>> predicate with different values unless it is truly a multi-valued
>> property and these are separate valid values. My suspicion is that
>> owl:sameAs ought to apply across instances using different views
>> (multiple "information resources" c.f. http-range-14) - as in you can
>> safely mix the assertions about the object from multiple views. This
>> last point needs some serious thinking, but I believe the fundamental
>> pattern of supporting multiple views is an inevitable consequence of the
>> Web architecture and the potential for multiple clients.
>>
>>
>>
>> Cheers
>>
>> Rob Atkinson
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Wed, 11 May 2016 at 00:44 Joshua Lieberman
>> <jlieberman@tumblingwalls.com <mailto:jlieberman@tumblingwalls.com>> wrote:
>>
>> Franz,
>>
>>
>>
>> There are certainly many shades of difference that can distinguish
>> how models are constructed and expressed. Serialization may be the
>> equivalent (in a literal) of the difference between RDF/XML and
>> Turtle. It’s complicated for CRS since WKT requires any CRS
>> different from EPSG4326 to be explicitly included in the text
>> string, although in principle it’s the same geometry. The next step
>> up is probably realization of a geometry for different scales /
>> levels of generalization. These are all the same conceptual geometry
>> but with a different realization in coordinate positions. If we go
>> to the difference between a feature boundary and a feature centroid,
>> that’s more clearly a different geometric model of the feature. It’s
>> less clear that there is a difference in geometry type between a
>> road centerline and a road marginal line, although it’s clearly a
>> different property of the feature.
>>
>>
>>
>> From a practical viewpoint of geometries living independently on the
>> Web that can be both discovered and linked to features, it makes
>> sense for these properties (CRS, geometric object type, generality)
>> to be top level functional geometry properties, and there should be
>> a set of feature geometry properties (envelope, centroid, boundary,
>> hull, buffer are in 19107) so that the appropriate property can be
>> chosen for a given application and people don’t all end up in Kansas
>> looking for something in the USA because the centroid property is
>> not identified as such.
>>
>>
>>
>> Whether alternate serializations should be allowed in one geometry
>> object is less clear. It is ambiguous in 19107, not allowed in GML,
>> generally not in Simple Features, and not forbidden in GeoSPARQL. My
>> sense is that serializations themselves are easily transformable and
>> multiple coordinate strings are too useful for composite geometries
>> and other purposes to risk confusion. GeoJSON is an issue here
>> because it requires one serialization and one CRS to be present
>> whether or not another one is desirable. There doesn’t seem to be an
>> prohibition against multiple geometry elements per feature, though,
>> so it makes sense to put different serializations into different
>> GeoJSON geometry objects as an extension to support JSON-LD / RDF
>> (not recognized by the GeoJSON specification, of course).
>>
>>
>>
>> Josh
>>
>>
>>
>>
>>
>> On May 10, 2016, at 6:09 AM, Frans Knibbe
>> <frans.knibbe@geodan.nl <mailto:frans.knibbe@geodan.nl>> wrote:
>>
>>
>>
>> Hello Josh, all,
>>
>>
>>
>> Sorry for misunderstanding what you meant. But it is good to
>> share thoughts about when and how to split geometry data in
>> different objects. Probably things like this deserve a place in
>> the BP document.
>>
>>
>>
>> You mentioned different serializations. That makes me wonder
>> what a serialization is. If I change the CRS or the type of a
>> geometry, I get a new geometry. That more or less follows from
>> the definition that a geometry is a model of a shape. If I use a
>> different CRS or different geometry type, I use a different
>> model. In other words, if the actual sequence of numbers in the
>> coordinates changes, we have a new geometry. So is that sequence
>> of numbers the serialization? I could use the same numbers in a
>> WKT string or in a GML object. Isn't that also serialization?
>> Probably we need two terms, one for different sequences of
>> coordinates, and one for packaging the same sequence of
>> coordinates in different ways. In notice that the GeoSPARQL
>> standard talks of WKT and GML as different serializations.
>>
>>
>>
>> To me it would make sense to let the same coordinate sequence in
>> different data types be part of the same geometry - they are
>> different expressions of the same model. For example:
>>
>>
>>
>> ex:geom6789
>>
>> a geom:Geometry, geom:Point ;
>>
>> geom:crs <http://www.opengis.net/def/crs/EPSG/0/28992> ;
>>
>> geosparql:asWKT "<http://www.opengis.net/def/crs/EPSG/0/28992>
>> POINT(131216.968 461378.333)"^^geosparql:wktLiteral ;
>>
>> geosparql:asGML "<gml:Point
>> srsName="EPSG:28992"><gml:coordinates>131216.968,461378.333</gml:coordinates></gml:Point>"^^geosparql:gmlLiteral
>> .
>>
>>
>>
>> Regards,
>>
>> Frans
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 2016-05-09 18:05 GMT+02:00 Joshua Lieberman
>> <jlieberman@tumblingwalls.com
>> <mailto:jlieberman@tumblingwalls.com>>:
>>
>> Yes, of course a geometry is a model. For that matter, a feature
>> is a model, but one that directly references the “real world".
>> The question was really whether multiple serializations can be
>> included in a geometry, e.g. for different scales or CRS’s. It
>> makes sense to me, but upon investigation, it is just not
>> something that is practiced, although there is no present axiom
>> in GeoSPARQL that prevents it. It doesn’t seem to be an explicit
>> part of either 19107 or GML, and the general semantic is that
>> multiple positions represent a composite serialization of a
>> geometry, not alternate ones.
>>
>>
>>
>> So we should probably stick with each unique combination of role
>> (centroid, etc. are actually defined terms in 19107), scale,
>> CRS, interpolation method, etc. as a distinct geometry.
>>
>>
>>
>> Backlinks from geometry to feature are problematic. If
>> geometries are to be stored separately, it’s probably to share them.
>>
>>
>>
>> Josh
>>
>>
>>
>>
>>
>> On May 9, 2016, at 9:50 AM, Bill Roberts <bill@swirrl.com
>> <mailto:bill@swirrl.com>> wrote:
>>
>>
>>
>> But I suspect at the heart of your comments is the
>> question what a geometry really is. There are at least
>> two possibledefinitions:
>> A) The geometry of a thing is its real world shape.
>> B) The geometry of a thing is a model of its real world
>> shape.
>>
>>
>>
>> I agree: in practice, (B) is always the case. No
>> representation of geometry will be completely accurate, and
>> different levels of approximation (different models) are
>> appropriate in different contexts.
>>
>>
>>
>>
>>
>>
>>
>> On 9 May 2016 at 15:35, Frans Knibbe <frans.knibbe@geodan.nl
>> <mailto:frans.knibbe@geodan.nl>> wrote:
>>
>> Hello Josh,
>>
>>
>>
>> It could be possible to add more context to the geometries,
>> to express that they are a footprint or a centroid for
>> instance. But I think that extra context will not be crucial
>> for many use cases. Especially since there is no standard
>> vocabulary for that extra meaning yet (although the
>> vocabulary I try to use does have a centroid
>> property: http://data.ign.fr/def/geometrie#centroid).
>>
>>
>>
>> But I suspect at the heart of your comments is the question
>> what a geometry really is. There are at least two possible
>> definitions:
>>
>> A) The geometry of a thing is its real world shape.
>>
>> B) The geometry of a thing is a model of its real world shape.
>>
>>
>>
>> I think I silently use definition B. But if others assume
>> definition A that could lead to problems. I am ashamed to
>> have to admit that I don't know the official OGC party line
>> in this case. But it would be great if an updated GeoSPARQL
>> standard could have a direct link to a core definition of
>> geometry.
>>
>>
>>
>> As for your last example (two coordinate strings that differ
>> in their CRS) in my line of thinking (adherent of definition
>> B) that would be modelled as separate geometries. An
>> extended example:
>>
>>
>>
>> ex:location1234
>>
>> a dcterms:Location ;
>>
>> locn:geometry ex:geom1234_1, ex:geom1234_2,
>> ex:geom1234_3, ex_geom1234_4 ;
>>
>>
>>
>> ex:geom1234_1
>>
>> a geom:Geometry, locn:Geometry, geom:Point ;
>>
>> locn:location ex:location123 ;
>>
>> geom:crs <http://www
>> <http://www/>.opengis.net/def/crs/EPSG/0/28992> ;
>>
>> geosparql:asWKT "<http://www
>> <http://www/>.opengis.net/def/crs/EPSG/0/28992>
>> POINT(...)"^^geosparql:wktLiteral .
>>
>>
>>
>> ex:geom1234_2
>>
>> a geom:Geometry, locn:Geometry, geom:Polygon ;
>>
>> locn:location ex:location123 ;
>>
>> geom:crs <http://www
>> <http://www/>.opengis.net/def/crs/EPSG/0/28992> ;
>>
>> geosparql:asWKT "<http://www
>> <http://www/>.opengis.net/def/crs/EPSG/0/28992>
>> POLYGON(...)"^^geosparql:wktLiteral .
>>
>>
>>
>> ex:geom1234_3
>>
>> a geom:Geometry, locn:Geometry, geom:Point ;
>>
>> locn:location ex:location123 ;
>>
>> geom:crs <http://www
>> <http://www/>.opengis.net/def/crs/OGC/1.3/CRS84> ;
>>
>> geosparql:asWKT "POINT(...)"^^geosparql:wktLiteral .
>>
>>
>>
>> ex:geom1234_4
>>
>> a geom:Geometry, locn:Geometry, geom:Polygon ;
>>
>> locn:location ex:location123 ;
>>
>> geom:crs <http://www
>> <http://www/>.opengis.net/def/crs/OGC/1.3/CRS84> ;
>>
>> geosparql:asWKT "POLYGON(...)"^^geosparql:wktLiteral .
>>
>>
>>
>>
>>
>> Note that I also included a backlink from geometry to
>> location (locn:location).
>>
>>
>>
>> The question still is: can this be considered a good
>> practice, given currently available standards/vocabularies?
>>
>>
>>
>> Regards,
>>
>> Frans
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> 2016-05-04 19:10 GMT+02:00 Joshua Lieberman
>> <jlieberman@tumblingwalls.com
>> <mailto:jlieberman@tumblingwalls.com>>:
>>
>> Do you mean:
>>
>>
>>
>> ex:location1234
>>
>> a dcterms:Location, ex:feature ;
>>
>> ex:centroid ex:geom1234 ;
>>
>> ex:footprint ex:geom6789 .
>>
>>
>>
>> ex:geom1234
>>
>> a geom:Geometry, gsp:Point ;
>>
>> geom:crs <http://www.opengis.net/def/crs/EPSG/0/28992> ;
>>
>> gsp:asWKT
>> "<http://www.opengis.net/def/crs/EPSG/0/28992>
>> POINT(...)"^^geosparql:wktLiteral .
>>
>>
>>
>> ex:geom6789
>>
>> a geom:Geometry, gsp:Polygon ;
>>
>> geom:crs <http://www.opengis.net/def/crs/EPSG/0/28992> ;
>>
>> gsp:asWKT
>> "<http://www.opengis.net/def/crs/EPSG/0/28992>
>> POLYGON(...)"^^geosparql:wktLiteral .
>>
>>
>>
>> In that case, the range of gsp:asWKT is not a geometry, but
>> a set of coordinate positions locating the geometry, so
>> “POLYGON” is the format of the coordinate string, not the
>> geometry class per se.
>>
>>
>>
>>
>>
>> The coordinate information is more problematic, since one
>> could easily want to have
>>
>>
>>
>> ex:geom6789
>>
>> a geom:Geometry, gsp:Polygon ;
>>
>> geom:crs <http://www.opengis.net/def/crs/EPSG/0/28992> ;
>>
>> gsp:asWKT
>> "<http://www.opengis.net/def/crs/EPSG/0/28992>
>> POLYGON(...)"^^geosparql:wktLiteral .
>>
>> gsp:asWKT "POLYGON(...)"^^geosparql:wktLiteral .
>>
>> gap:asGML “…”
>>
>>
>>
>> I consider asWKT to be problematic for this reason, and one
>> ground for updating the GeoSPARQL standard.
>>
>>
>>
>>
>>
>> Josh
>
> --
> Andrea Perego, Ph.D.
> Scientific / Technical Project Officer
> European Commission DG JRC
> Institute for Environment & Sustainability
> Unit H06 - Digital Earth & Reference Data
> Via E. Fermi, 2749 - TP 262
> 21027 Ispra VA, Italy
>
> https://ec.europa.eu/jrc/
>
Received on Wednesday, 18 May 2016 12:03:24 UTC