federatedplatforms / FEDeRATED-Semantic-Model

Semantic model developed for the FEDeRATED Platforms research project: https://www.federatedplatforms.eu
6 stars 2 forks source link

Is it possible to define pi:Location as an equivalent class to schema:Place? #5

Open ocorcho opened 2 years ago

ocorcho commented 2 years ago

When trying to make use of the ontology in the context of the SIMPLE project, we have discovered that we may need several properties from schema.org or alike to refer to the address of the location, telephone number, e-mail address, etc.

It would be very useful if pi:Location is declared as an equivalent class or as a subclass of schema:Place, so that those general properties can be reused without the need for any specific extension

silenroc1 commented 2 years ago

Place from schema.org is now added as a superclass of pi:Location to facilitate your reuse.

Internally, we're also discussing which of the various geography KGs would be most suited here, and whether we should enforce or recommend one, such as Geonames, GeoSPARQL, the EU KG, or schema.org/Place. We'd be interested in your thoughts and experiences also.

ocorcho commented 2 years ago

My suggestion is clearly GeoSPARQL for the definition of the features and geometries, which works well. GeoSPARQL is being now moved into a new version, with more expressivity, but I assume that for the use cases that you may be thinking of it would suffice with the current (backward compatible) version. If you have an example that you want me to try and represent, let me know, and I can provide an example in RDF.

silenroc1 commented 2 years ago

Can you indeed provide an example in RDF of an example location and port in GeoSPARQL? For further discussion, we have the following additional requirements from the Logistics domain:

ocorcho commented 2 years ago

This could be an example. Note that I am representing the airport as a Point, but it may be better to do it as a polygon.

` @prefix geosparql: http://www.opengis.net/ont/geosparql# . @prefix sf: http://www.opengis.net/ont/sf# . @prefix georec: https://datos.plataformasimple.es/recurso/logisticalfunction/ .

georec:MAD a pi:Airport ; rdfs:label "Madrid Barajas Airport" ; pi:hasUNLocode "XXXXXXXXXX" ; owl:sameAs https://datos.ign.es/recurso/btn100/aeropuerto/42 ; pi:locatedAt https://datos.plataformasimple.es/recurso/location/MAD . https://datos.plataformasimple.es/recurso/location/MAD a pi:Location ; geosparql:hasGeometry https://datos.plataformasimple.es/recurso/location/MAD/geometry . https://datos.plataformasimple.es/recurso/location/MAD/geometry a sf:Point ; geosparql:asWKT "POINT (-3.5634429200000013 40.49417094832496)"^^geosparql:wktLiteral . `

In my opinion, the concept of pi:Location may not be fully necessary if not relevant, since you may be able to connect directly the LogisticalFunction concepts with their geometry, without the need to go for an intermediate class Location, unless this is needed anywhere else.

silenroc1 commented 2 years ago

Thanks for the example. I understand your point of potentially circumventing pi:Location by connecting the Airport directly to its geometry. In the following version we can broaden the domain of pi:locatedAt to a geo:SpatialThing, such that the it may be circumvented if a concept for the specific location is already available, for example Madrid in:

ocorcho commented 2 years ago

For instance, for Spain, you may use the following query to obtain the municipalities where airports are, in the datos.ign.es SPARQL endpoint. Query here:

PREFIX btn100: https://datos.ign.es/def/btn100# PREFIX geosparql: http://www.opengis.net/ont/geosparql# PREFIX esadm: http://vocab.linkeddata.es/datosabiertos/def/sector-publico/territorio# PREFIX dc: http://purl.org/dc/terms/

SELECT DISTINCT ?airport ?airportName ?locality ?localityCode ?localityName WHERE {

?locality a esadm:Municipio . ?locality dc:title ?localityName . ?locality dc:identifier ?localityCode . ?locality geosparql:hasGeometry/geosparql:asWKT ?geoMuniLocali .

?airport a btn100:Aeropuerto . ?airport dc:title ?airportName . ?airport geosparql:hasGeometry/geosparql:asWKT ?geoAeroLocali .

FILTER (bif:st_intersects(?geoAeroLocali, ?geoMuniLocali))

}