Chapter 1: Identifiers
Last updated
Last updated
Question: How should an identifier of a class be specified?
Category: General/specific
Problem owner: Robin and Linda
Date: 13 Aug 2019
For the FIT with Ontologies project, we are creating an ontology for the flexible staffing industry (SETU). At the moment the parties within the industry use predefined messages, SETU standards, to exchange information, but with the project we are aiming for flexible messages that are clicked together easily out of a SETU ontology. At the moment there are several SETU messages in use, such as a timecard and invoice, but in the end there should come one SETU ontology.
One essential part of the current messages are the identifiers. For example, a timecard consists of an identifier. This has a value, but this value can be assigned by either the staffing customer or the staffing supplier. This means the identifier value is not sufficient, because also the creator must be specified. Next to this example, we can still think of some more extra information about an identifier, such as the version and date of creation/last update. The different options also have impact on how to deal with cardinalities of identifiers and how to add restrictions about identifiers.
What are the timecards provided by the staffing supplier given a certain period?
Does this timecard have a BTW id or KVK nummer, and what is the corresponding value?
(1, 2 and 3 are drawn on the picture)
A more general property 'Timecard identifier' between the Timecard class and Identifier class. Besides a property 'id value', the Timecard class is also connected with a separate Party class by an 'id owner' property.
More specific properties between the Timecard and Identifier class, such as 'customer assigned id' and 'supplier assigned id'. Not shown on the picture, but essential: Identifier class has a datatype property 'id value'! In this way, the owner of the identifier is already specified within the properties and therefore no special datatype property 'id owner' is needed. Other examples of more specific properties between a Party class and Identifier class: 'BTW number', 'KvK number', 'OIN number'.
Specific datatype properties, such as 'customer assigned id', 'supplier assigned id' or 'BTW number', are used to express the identifiers of a Timecard or Party class. The value is given as literal.
Create subclasses for the Identifier class, such as KVK nummer, BTW id or Identifier issued by seller.
Creator as datatype property from Identifier instead of more specific property towards Identifier. This is the approach as used within TOOP. Underlying vocabulary is adms:Identifier which has three datatype properties: 'skos:notation', 'dcterms:creator' and 'adms:schemeAgency'.
RegisteredOrganization hasCompanyCode CompanyCode
CompanyCode skos:notation "94253395-K"^^eg:msNotation
For this specific use case, there is a preference for option 2. The properties towards the Identifier class are more specific and it is possible to not only specify a datatype property with the identifier value, but also other information regarding the identifier if necessary, such as the version of the identifier.
Within the context of this specific use case, there is resistance to option 1 due to the highly generic nature. When applying this option, another place is needed to specify the owner of the identifier, because in SETU ontology it is really important to know who the owner of the identifier is. The owner could be added as datatype property of the Identifier class, but this is not ideal. One of the disadvantages in this project is that it makes it more difficult to work with restrictions/cardinalities.