Skip to content

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 the adms: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