Identifier and IdentifierSystem
Created by: Fak3
Products and Organizations can have multiple identifiers expressed using various identifier schemes.
Current model issues
As currently suggested in DigitalproductPassport.md, identifier is described with idScheme, idValue, idSchemeName:
{
"id": "https://abr.business.gov.au/ABN/View?abn=90664869327",
"name": "ACME Pty Ltd",
"idValue": "90664869327",
"idScheme": "abr.business.gov.au",
"idSchemeName": "Australian Business Number"
}
The problem is that those properties are assigned not to the specific identifier, but to the entity, which can have multiple identifiers with different identification schemes.
Let's imagine this json-ld data is stored and processed by owl inferencer. And in their graph database they already reflect that this organization have two identifiers:
<did:web:acme.au> <owl:sameAs> <https://abr.business.gov.au/ABN/View?abn=90664869327> .
Processing this new data according to owl:sameAs semantics, the owl inferencer will add new triples to the graph:
<did:web:acme.au> <idSchemeName> "Australian Business Number" .
This does not make sense, as it means Decentralized Identifier conforms to ABN identifier scheme.
Proposed model
To resolve the issue, identifiers should be described separately from the entity itself:
"id": "did:web:company.au",
"identifier": [{
"notation": "115378.76",
"isPartOf": {
"id": "augov:ABN",
"type": "IdentifierSystem",
"name": "Australian Business Number"
}
}, {
"notation": "679429",
"isPartOf": {
"id": "gs1:GLN",
"type": "IdentifierSystem",
"name": "GS1 Global Location Number"
}
}]
In the example above I omitted "type": "Identifier"
but included explicit "type": "IdentifierSystem"
. Whether we should require those types explicitly declared in documents is debatable.
I suggest reusing existing vocabularies:
- Class
adms:Identifier
based on the UN/CEFACT Identifier class. Properties:- skos:notation -- string with the literal value of the identifier
-
dcterms:isPartOf -- reference to the
ebg:IdentifierSystem
An important point to note is that properties of adms:Identifier are properties of the Identifier, not the resource that it identifies or the agency that issued it.
-
Class
ebg:IdentifierSystem
from BusinessGraph vocabulary Definition from ontology.ttl: "A system managed by a publisher (e.g., a register or agency) that is used to issue identifiers to entities (companies, persons, etc)." Properties:- schema:name -- label for humans
- dcterms:creator -- Agent that issues identifiers and then keeps them in a database (register), and who issued a specific identifier
-
Property
adms:identifier
that links a resource to theadms:Identifier
.
There are other properties in the BusinessGraph ontology wich can be reused, for ex jurisdiction, issuance and expiration date, etc... We should probably add them to our json-ld context file as well.
Related to #135 (closed)
Similar issue was discussed on traceability vocab: https://github.com/w3c-ccg/traceability-vocab/issues/944