gs1 / WebVoc

GS1 Web vocabulary development site
Apache License 2.0
29 stars 6 forks source link

certificationAgencyURL isn't a URL #44

Open johanhborg opened 2 months ago

johanhborg commented 2 months ago

certificationAgencyURL is defined as a gs1:Organization which makes no sense.

The most obvious solution would be to make it a xsd:anyURI just like authenticitySecurityFeatureInstructionsURL which is part of AuthenticityDetails in the same way certificationAgencyURL is a part of CertificationDetails.

The alternative would be to define it as a gs1:ReferencedFileDetails like is done for offerRedemptionURL, but I fail to see how certificationAgencyURL would benefit from any of the extra properties of that class, so my preference would be to keep it simple and use xsd:anyURI.

mgh128 commented 2 months ago

From a Linked Data perspective, the URL value of gs1:certificationAgencyURL may have associated Linked Data that describes that certification agency.

A certification agency is a kind of organisation, so it is logical that such Linked Data describing the agency would declare that the agency is of rdf:type gs1:Organization or schema.org/Organization.

justin2004 commented 2 months ago

A certification agency is a kind of organisation

Agreed. Then why not just call the predicate gs1:certificationAgency instead of gs1:certificationAgencyURL. Then hanging off of an instance of gs1:Organization you could use schema:url to reference the URL.

Or if you want a shortcut you could define gs1:certificationAgencyURL to be a property chain:

gs1:certificationAgencyURL owl:propertyChainAxiom  ( gs1:certificationAgency  schema:url ) .
mgh128 commented 2 months ago

Good suggestion except for the fact that gs1:certificationAgency is currently defined as a datatype property expecting one ore more rdf:langString values, which means we can't chain it.

The background history to this is that a minimal version of gs1:CertificationDetails has been in the GS1 Web Vocabulary since v1.1 in 2016 ( see https://github.com/gs1/WebVoc/blob/master/v1.1/gs1Voc_v1_1.jsonld and https://web.archive.org/web/20160329091217/http://gs1.org/voc/CertificationDetails ).
In that minimal version, only three properties were defined, namely gs1:certificationStandard , gs1:certificationAgency and gs1:certificationValue , all defined as being of rdf:type owl:DatatypeProperty - so unfortunately unchainable. The background to that was that they were most likely imported from the GS1 GDSN data model in which they are also defined as datatype properties, expecting a string value.
See https://navigator.gs1.org/gdsn/quick-search?version=4&search=certification&tab=attributesTab

All other properties within gs1:CertificationDetails were added more recently as part of an effort within the GS1 EPCIS / CBV 2.0 standard.

With hindsight, we might like to rename some properties or change their rdfs:range but that's not really backwards-compatible and is disruptive to anyone already using those properties.