opengeospatial / ogc-geosparql

Public Repository for the OGC GeoSPARQL Standards Working Group
78 stars 20 forks source link

prof:hasArtifact use of xsd:anyURI #553

Open Sveino opened 2 months ago

Sveino commented 2 months ago

profile.ttl ogc-geosparql/profile.ttl at master · opengeospatial/ogc-geosparql (github.com) used anyURI for prof:hasArtifact

prof:hasArtifact https://schemas.opengis.net/gml/3.2.1/gml_32_geometries.rdf^^xsd:anyURI ;

However, in previous version there is only: prof:hasArtifact <https://schemas.opengis.net/gml/3.2.1/gml_32_geometries.rdf>;

The latest option seems to be in line with DX-PROF initial-example

Is this a bug or is there are reason for this change?

nicholascar commented 2 months ago

We've changed to using a literal as opposed to an RDF node for hasArtifact because it is expected to indicate a non-RDF resource. This was always the intention of the predicate, viz. the definition of the predicate:

The URL of a downloadable file with particulars such as its format and role indicated by the Resource Descriptor

And https://schemas.opengis.net/gml/3.2.1/gml_32_geometries.rdf is not a node within an RDF graph (that contains the Resource Descripter referring to it) but a link to a file (that happens to contain RDF).

If a profile resource were an RDF thing then you could use other predicates to link the Resource Descriptor to it. Perhaps:

ex:pr-01
    a prof:ResourceDescriptor ;
    rdfs:label "SHACL Validator for Profile X" ;
    rdf:value ex:shapes-02 ;  # [1]
.

ex:shapes-02
    a owl:ontology ;
    rdfs:label "SHACL Shapes for Profile X" ;
    dcterms:hasPart 
        ex:shape-01 , 
        ex:shape-02 , 
        ex:shape-03 , 
        # ...
.

Or perhaps schema:about. I guess you could use prof:hasArtifact I guess etc., as we originally did in GeoSPARQL, but the PROF author weren't expecting this scenario as Resource Descriptors are really metadata about other things, so there was no real attempt made to cater for linking to other RDF object.

[1] this use of rdf:value is following the general mechanism of recording metadata for something and then pointing to the actual target of that metadata, as per RDFS 1.2's explanation of rdf:value which I've just made up here, as I'm not aware of any canonical way of making this kind of link when the value is another RDF node.

jabhay commented 2 months ago

Hi @Sveino , Are you happy for us to close this ticket given @nicholascar's response above? Cheers, Jo

VladimirAlexiev commented 1 month ago

I opened #575 that asks more direct questions about OGC's profile.ttl.

hasArtifact is expected to indicate a non-RDF resource.. This was always the intention of the predicate

Then please fix the examples in https://www.w3.org/TR/dx-prof/ because they all use URLs.

So how would you describe BFO in a profile? Something like this, or you'd use a different URL for the ResourceDescriptor?

<http://purl.obolibrary.org/obo/bfo.owl> a owl:Ontology, prof:ResourceDescriptor;
  prof:hasArtifact "http://purl.obolibrary.org/obo/bfo.owl"^^xsd:anyURI

I think that switching between prof:hasArtifact and rdf:value (and between URL and xsd:anyURI), depending on whether the artifact may be a node in a RDF graph, is a terrible idea: