spherity / oid-public

Project to describe and discuss public jsonld specifications.
0 stars 0 forks source link

Identifiers in general; use of adms:Identifier instead of ID specific attributes #3

Open jgmikael opened 3 weeks ago

jgmikael commented 3 weeks ago

The EU Core Vocabularies advocate the use of the adms:Identifier class for any identifier of any entity or asset: link to "Identifier" in the ADMS

However, it's true that the namespace the SEMIC team are linking to (adms: http://www.w3.org/ns/adms#) is nowadays in "deprecated" status and maintained by ...the SEMIC team > see https://www.w3.org/ns/legacy_adms#Identifier

I've always relied on the reference to the UN/CEFACT Core Component Library (CCL) as a quality assuration for the adms:Identifier - but now when I look at the latest CCL release (version 23B; January 2024) there's no mention of an "Identifier" class as such. Instead they've introduced the ACC (well, "reusable class or component") "Identity":

(NB: UN uses the ISO 15000-5 standard for metadata description and structure, let's not delve deeper into that bottomless hole this time...)

UN00001286 | ACC | Identity. Details | Information which uniquely identifies a person, organization, animal or object. UN00001287 | BCC | Identity. Identification. Identifier | A unique identifier for an identity. UN00001288 | BCC | Identity. Description. Text | A textual description of an identity. UN00004970 | BCC | Identity. Type. Code | A code specifying the type of identity. UN00005989 | BCC | Identity. Version. Identifier | An identifier of the version of this identity. UN00005990 | BCC | Identity. Identifier Length. Numeric | A length, expressed as a number of characters, of the identifier in this identity. UN00005991 | BCC | Identity. Issuer Party Name. Text | A name, expressed as text, of a party issuing this identity. UN00005992 | BCC | Identity. Legal Basis. Text | A legal basis, expressed as text, for this identity. UN00007176 | BCC | Identity. Valid From. Date Time | A date, time, date time or other date time value from which this identity is valid. UN00007918 | BCC | Identity. Name. Text | A name expressed as text of this identity. UN00007964 | BCC | Identity. Status. Code | A code specifying a status of this identity. UN00008718 | BCC | Identity. Type. Text | A type, expressed as text, for this identity. UN00005993 | ASCC | Identity. Specified. Label | A label specified for this identity. UN00007177 | ASCC | Identity. Validity. Period | A period for which this identity is valid. UN00007562 | ASCC | Identity. Issuing. Party | The party issuing this identity. UN00008719 | ASCC | Identity. Specified. Identity | An identity specified for this identity, such as a proprietary identity.

But that's not the whole story > this ACC or Aggregated Core Component, that is then used as a ABIE or Aggregated Business Information Entity is based on a uDT or Universal Data Type called "Identifier":

UDT000011 | DT | Identifier. Type |     | CC | Identifier. Content | A character string used to identify and distinguish uniquely, one instance of an object in an identification scheme from all other objects within the same scheme.   | SC | Identification Scheme. Identifier | The identification of the identification scheme.   | SC | Identification Scheme. Name. Text | The name of the identification scheme.   | SC | Identification Scheme Agency. Identifier | The identification of the agency that maintains the identification scheme.   | SC | Identification Scheme. Agency Name. Text | The name of the agency that maintains the identification scheme.   | SC | Identification Scheme. Version. Identifier | The version of the identification scheme.   | SC | Identification Scheme Data. Uniform Resource. Identifier | The Uniform Resource Identifier that identifies where the identification scheme data is located.   | SC | Identification Scheme. Uniform Resource. Identifier | The Uniform Resource Identifier that identifies where the identification scheme is located.

It's actually this "uDT" that the adms:Identifier is trying to replicate.

If we look at a more modern application of the UN/CEFACT CCL, the BSP JSON-LD Vocabulary, there's no mention of the adms:Identifier class, instead they're simply using a very generic "identifier" property > link In my eyes, this is kinda oversimplified since there's really NO metadata about what type a class specific identifier represents...

UBL also uses the same approach as UN/CEEFACT CCL - actually it was originally based directly on the CCL so no surprise here. Once again, no specific Class "Identifier" with these attributes, but instead a reference to a explicit Data Type called "Identifier":

Identifier. Type (xsd:normalizedString) | IdentifierContent | A character string to identify and uniquely distinguish one instance of an object in an identification scheme from all other objects in the same scheme, together with relevant supplementary information. IdentificationSchemeAgencyIdentifier | schemeAgencyID | optional | xsd:normalizedString | The identification of the agency that maintains the identification scheme. IdentificationSchemeAgencyNameText | schemeAgencyName | optional | xsd:string | The name of the agency that maintains the identification scheme. IdentificationSchemeDataUniformResourceIdentifier | schemeDataURI | optional | xsd:anyURI | The Uniform Resource Identifier that identifies where the identification scheme data is located. IdentificationSchemeIdentifier | schemeID | optional | xsd:normalizedString | The identification of the identification scheme. IdentificationSchemeNameText | schemeName | optional | xsd:string | The name of the identification scheme. IdentificationSchemeUniformResourceIdentifier | schemeURI | optional | xsd:anyURI | The Uniform Resource Identifier that identifies where the identification scheme is located. IdentificationSchemeVersionIdentifier | schemeVersionID | optional | xsd:normalizedString | The version of the identification scheme.

I'm a bit tired of defending this Identifier -class approach, thought it would be self-evident to use, but I seem to be mistaken :-)

rkxx commented 3 weeks ago

Hi Mike,

I think the Identifier defined in the EU Business Core Vocabulary is very generic and doesn't fit to our needs. It is designed to allow to use different schemes, to hold information about registration details and to be able to refer to more than one entity. In order to fulfil this requirements it needs to be a separate structure referenced by the entities it represents. The legalIdentifier of our legal entity (euid) is just a unique id represented by a simple string with a fixed format <country code><business register code>.<domestic registration number>_<optional validation character>. Therefore, we should redefine the semantic of the property legalIdentifier, so it suits our needs.

Further, the description of the properties legalIdentifier and identifier is inconsistent. The legalIdentifier has the cardinality 0..*, but the description says that an legalEntity must have an legalIdentifier. Further, the description of identifier says "Legal Entities may have any number of identifiers (but only one legal identifier)". Consequently, the cardinality of the legalIdentifier must be 1. In that case the identifier should be part of the legal entity structure and its property identifies is meaningless.

Conclusion: We should reuse the term legalIdentifier of the business core vocabulary, but redefine the meaning.

PerNordanlind commented 2 weeks ago

We have had online meetings with Semic were we asked about 0.. on legalIdentifier. The reply was that they wanted to keep the model "open" so everything is just [0..]. It is many attributes that have a strange cardinality. A company have 1 registration date in Sweden not [0..*]. Semic said that when you do an application profile based on EU Business Core Vocabulary you can there say legalIdentifier [1]