Open Sveino opened 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.
Hi @Sveino , Are you happy for us to close this ticket given @nicholascar's response above? Cheers, Jo
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.
owl:Ontology
. And that is used as a value of hasArtifact
in profile.ttlhttp://purl.obolibrary.org/obo/bfo.owl
(I think that's a bad practice, but that's life)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:
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?