- From: Andrea Perego <andrea.perego@jrc.ec.europa.eu>
- Date: Wed, 18 May 2016 15:39:36 +0200
- To: Joshua Lieberman <jlieberman@tumblingwalls.com>
- Cc: "Little, Chris" <chris.little@metoffice.gov.uk>, 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>
On 18/05/2016 14:02, Joshua Lieberman wrote:
> Best to consider this an alternative "asSVG" serialization, I would think.
+1.
BTW, if I remember well Andreas's API is returning geometries also in SVG.
Andrea
>
> --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/
>>
>
>
--
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 13:40:21 UTC