Closed stuartasutton closed 2 years ago
Basically we use xsd:anyURI to know when the value of something is a URL literal and should not be interpreted as "follow this to find a registry resource". It's a useful distinction both when rendering data and when doing things like indexing for our search API.
Trouble is that the value is not a URL literal, it's not a literal at all.
Would it be hard to A. use rdfs:Resource and interpret it in the same way? Or, better, B. use the URI value to tell you whether it's pointing to the registry?
A is at least correct, B is using the right data for the decision you want to make.
If all we're talking about is changing every instance of use of xsd:anyURI for rdfs:Resource instead, and nothing else changes, then we may be able to accommodate that. We'd need to go over it with the Registry team and the CaSS team first to see what it would impact/break/etc since both of those teams leverage our context file.
Trouble is that the value is not a URL literal, it's not a literal at all.
{ "ceterms:subjectWebpage": "https://example.com/123" }
I don't know what you'd call that if not a URL literal (and if not, then what is a URL literal?). A string, treated as a URL, rendered as an HTML link, etc. Processing stops when it hits this item, as the link is not followed or resolved at all because the intent is to communicate the URL itself. That's why we went with
xsd:anyURI
, which as Stuart points out, is a data type - because it is the data type of the data we intended to communicate.
I don't know what you'd call that if not a URL literal.
I'd call it the identifier of a webpage. If we were being nice to people using the data we would say that the range of subjectWebpage is a schema:WebPage, but we are in a place where we cannot be so nice so we just tell them that it's the identifier of something and let figure out what when they get there.
Processing stops when it hits this item,...
That's registry policy, which is fine, but we don't want to limit CTDL by registry policy.
what is a URL literal?
Something that is useful in XML (which is where it came from), not so useful in RDF.
Coming out of this discussion, these uses of xsd:anyURI
should be changed to rdfs:Resource
.
What are the implications (registry/CaSS)?
Anywhere their code is using xsd:anyURI, change it to use rdfs:Resource (but otherwise the functionality is identical). This would apply to wherever our systems are using it too.
Again: Is this applicable to every/all instances of our use of xsd:anyURI or would we end up having both xsd:anyURI and rdfs:Resource in our stuff?
Again: Is this applicable to every/all instances of our use of xsd:anyURI or would we end up having both xsd:anyURI and rdfs:Resource in our stuff?
"All things described by RDF are called resources, and are instances of the class rdfs:Resource. This is the class of everything. All other classes are subclasses of this class." https://www.w3.org/TR/rdf-schema/#ch_resource
Attached is the list of terms with the range xsd:anyURI. Their ranges are all included under the heading of "everything" :-) (Seriously, I have checked, there is no problem.)
@siuc-nate provide a final summary of exactly what the proposed changes are, their impacts and exactly what changes would be required by CaSS and Credential Registry.
As I understand it, the intent would be to change any reference to a range of xsd:anyURI to instead use rdfs:Resource, but otherwise, the functionality would all be the same.
@stuartasutton @philbarker is that correct?
Duplicate of #822
We have used
xsd:anyURI
frequently when our intention was to say that the range of a property could be any resource (i.e.,rdfs:Resource
) As Phil correctly notes in https://github.com/CredentialEngine/Schema-Development/issues/812#issuecomment-1055533131,xsd:anyURI
is a datatype and not a class suitable as range. Elsewhere, Nate has said that making a change fromxsd:anyURI
would entail significant implementation changes within Credential Engine. We need to clarify exactly what would be entailed (i.e., substance behind Nate's assertion) in correcting this error.