[dxwg] Service vs endpoint (#1242)

andrea-perego has just created a new issue for https://github.com/w3c/dxwg:

== Service vs endpoint ==
I propose we consider re-visiting the service-endpoint relationship, based on existing examples where such relationship is 1-to-many.

DCAT 2 includes two properties - `dcat:endpointURL` and `dcat:endpointDescription` - for specifying a service endpoint, plus property `dct:conformsTo`, which is used to specify its "protocol". As these properties take as subject a `dcat:DataService`, the service-endpoint relationship is 1-to-1.

There are however cases where services have more than one endpoint.

As an example, see the following record:

https://sdi.eea.europa.eu/catalogue/idp/api/records/29e08b66-e6f6-4b4f-95ad-b582d9fe3df5

The record describes a geospatial "view" service (i.e., a service portraying data on a map) with 2 endpoints, both serving the same dataset, but using different protocols (WMS and ArcGIS REST), and with different endpoint descriptions and URLs. Transformed into DCAT, this record will then be as follows:

````turtle
:eea_v_4326_250_k_wise-eionet-monitoring-sites_service a dcat:DataService ;
  ...
  dcat:endpointDescription <https://water.discomap.eea.europa.eu/arcgis/rest/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer> ;
  dcat:endpointURL <https://water.discomap.eea.europa.eu/arcgis/rest/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer> ;
  dct:conformsTo <https://developers.arcgis.com/rest/> ;
  dcat:endpointDescription <https://water.discomap.eea.europa.eu/arcgis/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer/WMSServer?request=GetCapabilities&service=WMS> ;
  dcat:endpointURL <https://water.discomap.eea.europa.eu/arcgis/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer/WMSServer> ;
  dct:conformsTo <http://www.opengeospatial.org/standards/wms> ;
  dcat:servesDataset :eea_v_4326_250_k_wise-eionet_p_2001-2020_v01_r04 ;
  ...
.
````

This case is outlined in DCAT 2 in [Example 49](https://www.w3.org/TR/vocab-dcat-2/#ex-service-gsa), where the solution is to duplicate the service record, and changing only the endpoint protocol, description, and URL. So, the record above should result in two different ones:

````turtle
:eea-rest a dcat:DataService ;
  ...
  dcat:endpointDescription <https://water.discomap.eea.europa.eu/arcgis/rest/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer> ;
  dcat:endpointURL <https://water.discomap.eea.europa.eu/arcgis/rest/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer> ;
  dct:conformsTo <https://developers.arcgis.com/rest/> ;
  dcat:servesDataset :eea_v_4326_250_k_wise-eionet_p_2001-2020_v01_r04 ;
  ...
.

:eea-wms a dcat:DataService ;
  ...
  dcat:endpointDescription <https://water.discomap.eea.europa.eu/arcgis/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer/WMSServer?request=GetCapabilities&service=WMS> ;
  dcat:endpointURL <https://water.discomap.eea.europa.eu/arcgis/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer/WMSServer> ;
  dct:conformsTo <http://www.opengeospatial.org/standards/wms> ;
  dcat:servesDataset :eea_v_4326_250_k_wise-eionet_p_2001-2020_v01_r04 ;
  ...
.
````

I think this approach should be complemented with the possibility of keeping instead a single service with 2 endpoints, as in the original record. It would be up to data providers to decide which one would suit them best.

A possible solution is to define a new property (e.g., `dcat:endpoint`), which specifies the endpoint (possibly typed itself as a  `dcat:DataService`), along with the endpoint description, URL and protocol.

The example above would then be re-written as follows:

````turtle
:eea_v_4326_250_k_wise-eionet-monitoring-sites_service a dcat:DataService ;
  ...
  dcat:endpoint [ a dcat:DataService ;
    dcat:endpointDescription <https://water.discomap.eea.europa.eu/arcgis/rest/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer> ;
    dcat:endpointURL <https://water.discomap.eea.europa.eu/arcgis/rest/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer> ;
    dct:conformsTo <https://developers.arcgis.com/rest/> ;
  ] ;
  dcat:endpoint [ a dcat:DataService ;
    dcat:endpointDescription <https://water.discomap.eea.europa.eu/arcgis/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer/WMSServer?request=GetCapabilities&service=WMS> ;
    dcat:endpointURL <https://water.discomap.eea.europa.eu/arcgis/services/WISE_SoE/EIONET_MonitoringSite_WM/MapServer/WMSServer> ;
    dct:conformsTo <http://www.opengeospatial.org/standards/wms> ;
  ] ;
  dcat:servesDataset :eea_v_4326_250_k_wise-eionet_p_2001-2020_v01_r04 ;
  ...
.
````

Please view or discuss this issue at https://github.com/w3c/dxwg/issues/1242 using your GitHub account

Received on Saturday, 20 June 2020 23:11:39 UTC