Life cycle of a Class

Latest update: 2015-02-19            


  

Introduction

In order to find a way to describe the "life cycle" of a (Part 2) Class that Class has to be modeled in a particular way using the following rationale:

  • Any change to the information related to a Class may constitute a change in the "criteria for membership", so in fact a change to another Class.
  • Classes are eternal and therefore do not exist in space-time, so the best that can be done is to put on record when a particular template instance about a Class became effective (relevant) in a particular context.
  • For an plant item requirements class, e.g. for CO_P-101, there may be more than one hundred templates related to that Class, and all became effective at different date-times, each with their own GUID. But the user still means that CO_P-101 class (just like he/she refers to John Doe, regardless of context).
  • In case of changes there will be templates that are contradicting each other, but cannot be deleted (because classes are eternal). They are deprecated.

Solution

If these many different Classes are declared to be classOf(temporal)Part of one "Ur"-Class (see http://en.wiktionary.org/wiki/ur-), with an absolute minimum of criteria for membership, that Ur-Class can be used as a collector ('handle' or 'anchor') of all information that has been added, replaced and deleted since that Ur-Class became effective. (that UrClass is a kind of "ClassOfWholeLifeIndividual").

Each class template has an annotation property:   meta:valEffectiveDate "2011-03-27T13:18:00Z"^^xsd:dateTime .

To the signature of each template about a Class its Ur-Class is added, conceptually similar to the addition of the temporal whole to templates for individuals. For example:

Starting with the thesis that the memberschip of a Part 2 Class is the sum of itself (Part 2: "A class may be a member of another class or itself.") and of all its "classOfPart" Classes, we can visualize this in the following diagram, where we show a timeline, and where:

  • the heavy-lined block represents the UrClass plus its information that is relevant at a given time;
  • each block represents a template instance;
  • the red blocks represent deprecated templates .

 

At a date-time along this timeline, dictated by the business needs, one can "take stock" and determine what information is (= which templates are) considered to be valid at that point in time and within the given selection criteria.

The following generic class model can be used for that (assuming lifted templates):

Class model

The classOfPart of the Ur-Class is the result of a union of all members of an EnumeratedSetOfClass, of which the membership is a matter of choice, in that one could be interested in all information or in a selection, such as only the "process data".  That choice is a set of "classOfPart" Classes of that Ur-Class, valid at a given date-time.

The overruled classOfPart Classes are to be automatically deprecated. This can be done as follows:

    :C521DEB63B1E540019C9BDB3C22610B6B meta:valDeprecationDate "2011-06-15T14:38:00Z"^^xsd:dateTime .

NOTE

The above applies to lifted templates, where the classOfPart Classes are accessible. In lowered templates this is, for practical reasons, not possible. The solution for that is that the lowered templates are, as such, effective and deprecated. If mapped to lifted templates, these dates are used in instances of the template ActivityCausesEffectiveClass or ActivityCausesDeprecatedClass.

That, however, is somewhat complex and, because information will predominantly be stored as instances of lowered templates, the following templates are being used (see http://www.15926.org/topics/templates-for-documents/index.htm  for some other options):

1) when an infoset of one particular ClassOfIndividual has to be represented:

RepresentationOfClassOfIndividualWithTemplateSet

 

2) when information about one or more objects has to be represented in a document:

DefinitionOfDocumentContentWithTemplateSet

3) one instance of the template EnumerationOfClass is required to include any template in the EnumeratedSetOfClass instance:

Adding one template to a collection

EnumeratedSetOfClass

Instances of EnumeratedSetOfClass are basically views.

In any case conflicting information shall be avoided, as will be defined in Part 10. For example two different values for the design pressure of the same Class applicable at the same date-time (Classes are always "valid", but may no longer be applicable in a certain context). In case a template instance has been replaced with another template instance, the replaced template shall be automatically deprecated. It remains accessible and dereferencable for lifecycle information analysis.

Example

This example shows, that at certain times, different numbers of templates apply to CO_P-101 ("CO_" = ClassOf) and its contained stream class CO_P-101-S.

Two of them have been replaced with another template and hence have been deprecated.

Also is shown that the pump specification SP-1234 has (here) four data sets, valid at different dates. These data sets are the result of SPARQL queries.

Code listing

The following listing applies to above example:

#################################

## Project data of XYZ Corp.   ##

#################################

 

@prefix : <http://p1234.xyz-corp.com/data/> .

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix owl: <http://www.w3.org/2002/07/owl#> .

@prefix skos: <http://www.w3.org/2004/02/skos/core#> .

@prefix dm: <http://rds.posccaesar.org/2008/02/OWL/ISO-15926-2_2003#> .

@prefix edm: <http://data.posccaesar.org/edm/> .

@prefix meta: <http://data.posccaesar.org/meta/> .

@prefix tpl: <http://data.posccaesar.org/tpl/> .

@prefix rdl: <http://data.posccaesar.org/rdl/> .

 

######################

## DECLARATIONS     ##

######################

 

# Declaration of Pump Specification SP-1234

:C7374D9E933F14EB8A76A407F0E42C563 rdf:type dm:ClassOfInformationObject, owl:Class ;

    rdfs:subClassOf rdl:RDS329984 ;

    rdfs:label "Specification for P-101" ; # This label is optional

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

 

:TF17550D290A845878D3941E41D164055 rdf:type tpl:ClassifiedIdentificationOfClassOfIndividual ;

    tpl:hasIdentified :C7374D9E933F14EB8A76A407F0E42C563 ;

    tpl:valIdentifier "Specification for P-101" ;

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

 

# Declaration of CO_P-101

:CDD944DDB22F84AFBA8A0216B9EAF0CFA rdf:type dm:ClassOfInanimatePhysicalObject, owl:Class ;

    rdfs:subClassOf rdl:RDS416834, rdl:RDS686114 ;

    rdfs:label "Requirements Class for P-101" ; # This label is optional

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

  

:T0BCC56FD09914359A7DA48C5ACAF20A3 rdf:type tpl:ClassifiedIdentificationOfClassOfIndividual ;

    tpl:hasIdentified :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:valIdentifier "Requirements Class for P-101 alias CO_P-101" ;

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

  

# Declaration of CO_P-101-S

:C1B101DAA43BF4AB88860297DB86E66CB rdf:type dm:ClassOfInanimatePhysicalObject, owl:Class ;

    rdfs:subClassOf rdl:RDS2197563291 ;

    rdfs:label "Stream through P-101" ; # This label is optional

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

 

:TCB854D2CDBC04E5B8A564B0812470859 rdf:type tpl:ClassifiedIdentificationOfClassOfIndividual ;

    tpl:hasIdentified :C1B101DAA43BF4AB88860297DB86E66CB ;

    tpl:valIdentifier "Stream through CO_P-101" ;

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

 

######################

## TEMPLATES        ##

######################

 

# Design Temperature = 150 degrees Celsius as of 2012-01-23

:T00804BD5A34E401FA9E75636146FA8E3 rdf:type tpl:ClassOfIndividualHasIndirectPropertyWithValue, owl:Thing ;

    tpl:hasPossessorType :C1B101DAA43BF4AB88860297DB86E66CB ;

    tpl:hasIndirectPropertyType rdl:RDS357164 ;

    tpl:valPropertyValue "150"^^xsd:decimal ;

    tpl:hasScale rdl:RDS1322684 ;

    meta:valEffectiveDate "2012-01-23T00:00:00Z"^^xsd:dateTime .

 

# Design Temperature no longer is 150 degrees Celsius as of 2012-03-14

:T00804BD5A34E401FA9E75636146FA8E3 meta:valDeprecationDate "2012-03-14T00:00:00Z"^^xsd:dateTime .

 

# Design Temperature = 140 degrees Celsius as of 2012-03-14

:T901BF201F9A94DEA88C0CE5F56982DED rdf:type tpl:ClassOfIndividualHasIndirectPropertyWithValue, owl:Thing ;

    tpl:hasPossessorType :C1B101DAA43BF4AB88860297DB86E66CB ;

    tpl:hasIndirectPropertyType rdl:RDS357164 ;

    tpl:valPropertyValue "140"^^xsd:decimal ;

    tpl:hasScale rdl:RDS1322684 ;

    meta:valEffectiveDate "2012-03-14T00:00:00Z"^^xsd:dateTime .

 

# Design Pressure = 110 barg as of 2012-01-24

:TDF5632C9FEC44523882B3CF2A2DEB5CF rdf:type tpl:ClassOfIndividualHasIndirectPropertyWithValue, owl:Thing ;

    tpl:hasPossessorType :C1B101DAA43BF4AB88860297DB86E66CB ;

    tpl:hasIndirectPropertyType rdl:RDS357074 ;

    tpl:valPropertyValue "110"^^xsd:decimal ;

    tpl:hasScale rdl:RDS1348874 ;

    meta:valEffectiveDate "2012-01-24T00:00:00Z"^^xsd:dateTime .

 

# Design Pressure no longer is 110 barg as of 2012-05-09

:TDF5632C9FEC44523882B3CF2A2DEB5CF meta:valDeprecationDate "2012-05-09T00:00:00Z"^^xsd:dateTime .

 

# Design Pressure = 125 barg as of 2012-05-09

:T8F783EBFE11A44BBB891A335B2C6AED4 rdf:type tpl:ClassOfIndividualHasIndirectPropertyWithValue, owl:Thing ;

    tpl:hasPossessorType :C1B101DAA43BF4AB88860297DB86E66CB ;

    tpl:hasIndirectPropertyType rdl:RDS357074 ;

    tpl:valPropertyValue "125"^^xsd:decimal ;

    tpl:hasScale rdl:RDS1348874 ;

    meta:valEffectiveDate "2012-05-09T00:00:00Z"^^xsd:dateTime .

 

# Capacity = 15 m3/hr as of 2012-01-25

:TAD462BCCACA64399B935442CF9A6DBCC rdf:type tpl:ClassOfIndividualHasIndirectPropertyWithValue, owl:Thing ;

    tpl:hasPossessorType :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:hasIndirectPropertyType rdl:RDS7354248 ;

    tpl:valPropertyValue "15"^^xsd:decimal ;

    tpl:hasScale rdl:RDS1321064 ;

    meta:valEffectiveDate "2012-01-25T00:00:00Z"^^xsd:dateTime .

 

# Stream CO_P-101-S is contained in Pump P-101 as of 2011-12-05

:T1B50FCD21D7045E58BBD73422B2884B1 rdf:type tpl:ClassOfContainmentDefinition, owl:Thing ;

    tpl:hasClassOfContainer :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:hasClassOfContained :C1B101DAA43BF4AB88860297DB86E66CB ;

    tpl:hasCardinalityOfContainer rdl:RDS387322 ; # faked ID

    tpl:hasCardinalityOfContained rdl:RDS387322 ;

    meta:valEffectiveDate "2011-12-05T00:00:00Z"^^xsd:dateTime .

 

######################

## SNAPSHOTS        ##

######################

 

# SNAPSHOT TAKEN AT 2012-01-24 (4 template instances)

:T444B4BD798CF410A8FC4381A9AE8E36C rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C30A99A4A6F3D49B78531E3B3B2D1AA87 ;

    tpl:hasMember :T00804BD5A34E401FA9E75636146FA8E3 ; # Design Temperature = 150 degrees Celsius as of 2012-01-23

    meta:valEffectiveDate "2012-01-24T00:00:00Z"^^xsd:dateTime .

  

:T01DD6DB6A2AC4F4B840D1801CDEF2A29 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C30A99A4A6F3D49B78531E3B3B2D1AA87 ;

    tpl:hasMember :TDF5632C9FEC44523882B3CF2A2DEB5CF ; # Design Pressure = 110 barg as of 2012-01-24

    meta:valEffectiveDate "2012-01-24T00:00:00Z"^^xsd:dateTime .

 

:TCDBB6B0FE5FF4A348AA1F20BF145FFC0 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C30A99A4A6F3D49B78531E3B3B2D1AA87 ;

    tpl:hasMember :T1B50FCD21D7045E58BBD73422B2884B1 ; # Stream CO_P-101-S is contained in Pump P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-01-24T00:00:00Z"^^xsd:dateTime .

  

:T3E1AFB2E220F44A19C87B55C2A9A035D rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C30A99A4A6F3D49B78531E3B3B2D1AA87 ;

    tpl:hasMember :T0BCC56FD09914359A7DA48C5ACAF20A3 ; # Identification of CO_P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-01-24T00:00:00Z"^^xsd:dateTime .

 

# SNAPSHOT TAKEN AT 2012-01-26 (5 template instances)

:TCEA6E6B734564F36AE129902D46BCCEE rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CD329DC390CAE4D138F07B8A6974391D7 ;

    tpl:hasMember :T00804BD5A34E401FA9E75636146FA8E3 ; # Design Temperature = 150 degrees Celsius as of 2012-01-23

    meta:valEffectiveDate "2012-01-26T00:00:00Z"^^xsd:dateTime .

 

:TB8DDFDD5DA4E440EB79C5444C6675F14 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CD329DC390CAE4D138F07B8A6974391D7 ;

    tpl:hasMember :TDF5632C9FEC44523882B3CF2A2DEB5CF ; # Design Pressure = 110 barg as of 2012-01-24

    meta:valEffectiveDate "2012-01-26T00:00:00Z"^^xsd:dateTime .

 

:T851AEF490BAF40789F2EEF368E0D1A3F rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CD329DC390CAE4D138F07B8A6974391D7 ;

    tpl:hasMember :T1B50FCD21D7045E58BBD73422B2884B1 ; # Stream CO_P-101-S is contained in Pump P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-01-26T00:00:00Z"^^xsd:dateTime .

  

:T82BF42E462654948884209EB5A91784E rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CD329DC390CAE4D138F07B8A6974391D7 ;

    tpl:hasMember :T0BCC56FD09914359A7DA48C5ACAF20A3 ; # Identification of CO_P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-01-26T00:00:00Z"^^xsd:dateTime .

  

:T4BDDB01D928B4B9E9AB5E9C91AC5842F rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CD329DC390CAE4D138F07B8A6974391D7 ;

    tpl:hasMember :TAD462BCCACA64399B935442CF9A6DBCC ; # Capacity = 15 m3/hr as of 2012-01-25

    meta:valEffectiveDate "2012-01-26T00:00:00Z"^^xsd:dateTime .

 

# SNAPSHOT TAKEN AT 2012-03-15 (5 template instances)

:T03370B18B3F744AA8B96ED5B6380219D rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C08785CCF88F54D2FB789882B7E94EA1D ;

    tpl:hasMember :T901BF201F9A94DEA88C0CE5F56982DED ; # Design Temperature = 140 degrees Celsius as of 2012-03-14

    meta:valEffectiveDate "2012-03-15T00:00:00Z"^^xsd:dateTime .

 

:T57025F0D852C4222A5FDAF19CEC30D7B rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C08785CCF88F54D2FB789882B7E94EA1D ;

    tpl:hasMember :TDF5632C9FEC44523882B3CF2A2DEB5CF ; # Design Pressure = 110 barg as of 2012-01-24

    meta:valEffectiveDate "2012-03-15T00:00:00Z"^^xsd:dateTime .

 

:T8F05628C513840368777D3B8C28277F7 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C08785CCF88F54D2FB789882B7E94EA1D ;

    tpl:hasMember :T1B50FCD21D7045E58BBD73422B2884B1 ; # Stream CO_P-101-S is contained in Pump P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-03-15T00:00:00Z"^^xsd:dateTime .

  

:TD1DD6D26BAD044139DE245829D04302D rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C08785CCF88F54D2FB789882B7E94EA1D ;

    tpl:hasMember :T0BCC56FD09914359A7DA48C5ACAF20A3 ; # Identification of CO_P-101 as of 2011-12-05 

    meta:valEffectiveDate "2012-03-15T00:00:00Z"^^xsd:dateTime .

  

:T56CFBAB8AC624FAF9C38AD5583A79871 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :C08785CCF88F54D2FB789882B7E94EA1D ;

    tpl:hasMember :TAD462BCCACA64399B935442CF9A6DBCC ; # Capacity = 15 m3/hr as of 2012-01-25

    meta:valEffectiveDate "2012-03-15T00:00:00Z"^^xsd:dateTime .

 

# SNAPSHOT TAKEN AT 2012-06-10 (5 template instances)

:T7EB2AFE172074C8FA8709E0C45B048B6 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CDA705636E14E42B5B7156F4EEE0E274D ;

    tpl:hasMember :T901BF201F9A94DEA88C0CE5F56982DED ; # Design Temperature = 140 degrees Celsius as of 2012-03-14

    meta:valEffectiveDate "2012-06-10T00:00:00Z"^^xsd:dateTime .

 

:T0D436C8B654A49D7AC81D1423E1BEA01 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CDA705636E14E42B5B7156F4EEE0E274D ;

    tpl:hasMember :T8F783EBFE11A44BBB891A335B2C6AED4 ; # Design Pressure = 125 barg as of 2012-05-09

    meta:valEffectiveDate "2012-06-10T00:00:00Z"^^xsd:dateTime .

 

:TA7ED15C41E3F446AB5755FA0E59E1A94 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CDA705636E14E42B5B7156F4EEE0E274D ;

    tpl:hasMember :T1B50FCD21D7045E58BBD73422B2884B1 ; # Stream CO_P-101-S is contained in Pump P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-06-10T00:00:00Z"^^xsd:dateTime .

 

:TCFA08B586AD143C99B219775677546FD rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CDA705636E14E42B5B7156F4EEE0E274D ;

    tpl:hasMember :T0BCC56FD09914359A7DA48C5ACAF20A3 ; # Identification of CO_P-101 as of 2011-12-05

    meta:valEffectiveDate "2012-06-10T00:00:00Z"^^xsd:dateTime .

 

:T20B5BF6DC2A744C8ADA7E6E5C139DB27 rdf:type tpl:EnumerationOfClass, owl:Thing ;

    tpl:hasSet :CDA705636E14E42B5B7156F4EEE0E274D ;

    tpl:hasMember :TAD462BCCACA64399B935442CF9A6DBCC ; # Capacity = 15 m3/hr as of 2012-01-25

    meta:valEffectiveDate "2012-06-10T00:00:00Z"^^xsd:dateTime .

 

###########################

## SPECIFICATION CONTENT ##

###########################

 

# Information content of Pump Specification SP-1234 valid at 2012-01-24

:T62926AAEADE84C09ABC60E4DD5CCECA3 rdf:type tpl:RepresentationOfClassofIndividualWithTemplateSet ;

    tpl:hasRepresented :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:hasRepresentation :C9A7DA26146F244F58589C4DDFE0EB92D ;

    tpl:hasTemplateSet :C30A99A4A6F3D49B78531E3B3B2D1AA87 ;

    meta:valEffectiveDate "2012-01-24T00:00:00Z"^^xsd:dateTime .

 

# Information content of Pump Specification SP-1234 valid at 2012-01-26

:TFFD55CD04C9C411E8EE76D9165D9677A rdf:type tpl:RepresentationOfClassofIndividualWithTemplateSet ;

    tpl:hasRepresented :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:hasRepresentation :C57BBD18C709E43BCB0D28890D258504B ;

    tpl:hasTemplateSet :CD329DC390CAE4D138F07B8A6974391D7 ;

    meta:valEffectiveDate "2012-01-26T00:00:00Z"^^xsd:dateTime .

 

# Information content of Pump Specification SP-1234 valid at 2012-03-15

:TB18B71CB1AEC4507BDF39A525A808FAA rdf:type tpl:RepresentationOfClassofIndividualWithTemplateSet ;

    tpl:hasRepresented :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:hasRepresentation :C348AE291649C4B9394A8B7E947E6A6A3 ;

    tpl:hasTemplateSet :C08785CCF88F54D2FB789882B7E94EA1D ;

    meta:valEffectiveDate "2012-03-15T00:00:00Z"^^xsd:dateTime .

 

# Information content of Pump Specification SP-1234 valid at 2012-06-10

:T20CFF46566124B17B96537F32D0EC2A7 rdf:type tpl:RepresentationOfClassofIndividualWithTemplateSet ;

    tpl:hasRepresented :CDD944DDB22F84AFBA8A0216B9EAF0CFA ;

    tpl:hasRepresentation :CF3E5BC752E7B45B9B6EFAFDEB5A15FC7 ;

    tpl:hasTemplateSet :CDA705636E14E42B5B7156F4EEE0E274D ;

    meta:valEffectiveDate "2012-06-10T00:00:00Z"^^xsd:dateTime .

 

Epilog

The use of the templates EnumerationOfClass and RepresentationOfClassofIndividualWithTemplateSet is optional but convenient. Collection a number of template instances for documentation purposes can also be done with SPARQL queries, but the results will have to be encapsulated by a named graph.

Such queries are also necessary for these two template types, but they are easier to set-up and manage, because they have one "handle". That handle also makes the addition of provenance data easier.