All things, that are involved in any information, shall first be declared and identified as "Ur" objects (see https://en.wiktionary.org/wiki/ur-). The idea can be explained using a Requirements Class for pump P-101 as an example.
All objects, including the Ur objects, shall have an immutable ID that always stays with that object. It is advisable to use GUIDs for that, because these are globally unique, with a neglecible chance of duplication, even more so because they are used inside a, guaranteed unique, namespace.
There are many flavors of UUID/GUID. A GUID without hyphens has an advantage of being accepted as bookmark in HTML applications.
The GUID can easily be fetched with a simple SPARQL ASK query using an identifier as search criterium and hence doesn't have to be stored in the source system. NOTE - In the above example the tag of the Requirements Class was CO_P-101. It is also possible to use P-101, but then this SPARQL ASK query must include the Part 2 entity type.
The "Declaration Class" is important and shall be selected carefully. It is the class of which P-101 is a member. It is the class that is ALWAYS valid as long as P-101 hasn't been deprecated. If the Declaration Class "PUMP" is changed P-101 is no longer valid and all information is frozen. So use PUMP and not CENTRIFUGAL PUMP, because it may change to POSITIVE DISPLACEMENT PUMP. Granted, it isn't likely to happen, but better safe than sorry. Later the classification with CENTRIFUGAL PUMP can be done with a template which can, when necessary, be deprecated and changed to POSITIVE DISPLACEMENT PUMP with a new template. The anchor remains PUMP then.
In the RDL (Reference Data Library) a set of generic identification types has been defined as instances of ClassOfFunctionalObject.
For Role1 refer to http://data.15926.org/esoc/DeclarationOfClassOfIndividual.var_EntityType or create a local subset.
For Role2 refer to http://data.15926.org/esoc/DeclarationOfClassOfIndividual.var_ObjectTypeId or create a local subset.
# DECLARED OBJECTS (check existence and if label not existing: declare)
# Declaration of identified class of individual
:id(var_IdentifierValue) rdf:type <var_EntityType> ;
rdfs:subClassOf <var_ObjectTypeId> ;
rdfs:label "var_IdentifierValue" ;
meta:valEffectiveDate "var_dateTime"^^xsd:dateTime .