AssemblyOfAnIndividual Template

Message
Author
KeithWillshaw
Posts: 77
Joined: Tue May 15, 2012 8:48 am

AssemblyOfAnIndividual Template

#1 Post by KeithWillshaw »

I have been reviewing the new Templates and have what may well be a dumb a question on this one

There are 3 roles

1) hasWhole
2) hasPart
3) hasAssemblyType

The first 2 are straightforward enough but I am unclear on the third

Its type is dm:ClassOfAssemblyOfIndividual and the Remarks and Examples says 'Use the ID from the design'

What does this actually mean ?

Am I supposed to create an identifier on the fly ?
If so do I need to persist it ?

To date we have just been using the prototemplate which has the first 2 roles which is why this has not come up before.

The same form of words 'Use the ID from the design' is also used on other template roles.

Regards Keith

HansTeijgeler
Posts: 283
Joined: Sun Jan 22, 2012 10:02 pm

Re: AssemblyOfAnIndividual Template

#2 Post by HansTeijgeler »

Hi Keith,

Before I answer your question I want to say that I will add, in the set of templates for WholeLifeIndividual, templates without reference to a ClassOfRelationship. You are right, they should be there, be it for limited use. But please read on.

The templates for WholeLifeIndividual have, deliberately, PossibleIndividual and not WholeLifeIndividual as Role Filler, because they can be used by those who want to use 15926 for app-to-app interfacing.

In case you are interested in lifecycle information integration, you should use these templates exclusively for instances of WholeLifeIndividual. And if you think hard enough you might find very few that apply to an individual uninterruptedly from the day that is started to exist till the day that it ended to exist.
All other templates for individuals should be those for TemporalPart.

As you may remember, the design of a plant is to be done at Class level, for which there is, today, a set of 100+ base templates. More to follow upon request. In these templates you will find those where a subtype of ClassOfRelationship is being defined. That is the subtype of ClassOfRelationship that is the classifier of a subtype of Relationship in a template for TemporalPart or WholeLifeIndividual, the one you referred to.

What that classification of the applicable Relationship does is that it provides the link between the design and the real world, as you can also read in the publication "Plant Lifecycle Data Model" on this site (see http://www.15926.org/publications/gener ... /index.htm).

The shadowed parts in the graphs represent a reference to that class model or the relevant part of it. The grey classification relationships between the objects in the individual templates and the class model are, in the future, relationships that must be checked at validation time (something you might use reasoners for, I guess).

A special case is any template based on OtherRelationship that must be classified with an instance of ClassOfRelationshipWithSignature. That gives rather wild graphs, see for example TemporalPartStreamHasSource (http://15926.org/templatespecs/TP-STRM-02.xml). But for the user that is "under the hood". That classification is mandatory, because OtherRelationship is meaningless. As Part 2 says: "The meaning of an <other_relationship> is specified by a <classification> by an instance of <class_of_relationship_with_signature>."

Please feel free to challenge this or ask for more explanation.

OnnoPaap
Posts: 189
Joined: Sun Jan 22, 2012 9:14 pm

Re: AssemblyOfAnIndividual Template

#3 Post by OnnoPaap »

All that Hans said is correct. However it may be the case that you can't see how it replies to Keith's question.
In that case, this is what I think Hans means by it (please correct me if I'm wrong).
  • Keith presents a question about the AssemblyOfAnIndividual Template which, so says Hans, is a template that almost never should be used.
  • In our (industrial) state of mind, the templates that should be used often for assemblies are:
Then Keith continues with the question if the kind of relation used to classify the assembly should be created on the fly or persisted on the interfaced legacy system side.

In my opinion neither. The instances should be created according to a persisted specialized template model (some call Object Information Model). E.g. a Centrifugal Pump (Class) can have an Impeller (class). The kind of assembly is already selected in that specialized template. The specialized template models should be available in a central endpoint, for instance from a JORD database.

HansTeijgeler
Posts: 283
Joined: Sun Jan 22, 2012 10:02 pm

Re: AssemblyOfAnIndividual Template

#4 Post by HansTeijgeler »

Let me sketch the scenario of Parts 7/8/9:

Class-related templates can be defined in an ontology for:
[1] generic classes, like the ones you find in the RDL, or
[2] standards of industrial organizations, or
[3] product classes in a vendor catalog, or
[4] project-specific classes, or
[5] engineering and plant design information.

Individual-related templates can be defined in an ontology for:
[6] logistics, construction, operations and maintenance information.

In all cases the information is created in some existing application, following the logic of that application. When the need arises for sharing information inside the applicable discipline, this information is being mapped to templates in the Part 8/9 format and stored in a façade (web server). It is advisable to have a façade per application per project. Members of that discipline then can fetch these templates on an as-needed basis with SPARQL queries.

At the time that the information is good enough for sharing between the disciplines, the representing templates are consolidated in the façade of the applicable discipline on the project. Other disciplines then can fetch them on an as-needed basis with SPARQL queries, with all the necessary security precautions.

By the time that the information is good enough for sharing between business partners, the representing templates are consolidated in a project façade. The business partners, e.g. the Client, JV partners, vendors, subcontractors, etc can fetch them on an as-needed basis, with all the necessary security precautions.

All façades are functionally identical and are combined in a federation. This will be defined in the upcoming Part 9. Its completion takes time, because the technology is new.

And, ooh, this set-up can also be applied in totally different settings, where groups of people work together. But they need to set up their own reference data library. Health care would be one example with our lifecycle health-related information. But that's another silo.

KeithWillshaw
Posts: 77
Joined: Tue May 15, 2012 8:48 am

Re: AssemblyOfAnIndividual Template

#5 Post by KeithWillshaw »

OnnoPaap wrote:All that Hans said is correct. However it may be the case that you can't see how it replies to Keith's question.
In that case, this is what I think Hans means by it (please correct me if I'm wrong).
  • Keith presents a question about the AssemblyOfAnIndividual Template which, so says Hans, is a template that almost never should be used.
  • In our (industrial) state of mind, the templates that should be used often for assemblies are:
Then Keith continues with the question if the kind of relation used to classify the assembly should be created on the fly or persisted on the interfaced legacy system side.

In my opinion neither. The instances should be created according to a persisted specialized template model (some call Object Information Model). E.g. a Centrifugal Pump (Class) can have an Impeller (class). The kind of assembly is already selected in that specialized template. The specialized template models should be available in a central endpoint, for instance from a JORD database.
While we need to discuss when and where we use Classes rather than Whole Life Individual I dont want to get into it here, in any case the same role appears in the Class and Temporal versions of the template.

I want to be clear on what is required to model ANY template with this role.

My concern with using Specialized templates in the OIM is that we have a very large number of types of assembly and ending up with a specialized template for each. If we just consider a pump there could be hundreds of templates.

I can see that we could use the template(s) as defined and create a Class such as CentrifugalPumphasImpeller which is a member of ClassOfAssemblyofIndividual in the RDL. Then the modelling process becomes relatively simpler as the modelling tool can show a pulldown list based on definitions of type AssemblyofIndividual which produces a defacto specialized template.

In an environment where you have an OIM generating these classes automatically is a trivial exercise since it can be done using the Constraints usually present for the hasWhole and hasPart data.

Keith

OnnoPaap
Posts: 189
Joined: Sun Jan 22, 2012 9:14 pm

Re: AssemblyOfAnIndividual Template

#6 Post by OnnoPaap »

KeithWillshaw wrote: My concern with using Specialized templates in the OIM is that we have a very large number of types of assembly and ending up with a specialized template for each. If we just consider a pump there could be hundreds of templates.
I don't agree.

A pump contains streams (suction and discharge). The stream model contains the fluid process data (min/nor/max conditions). Everything that contains a stream uses the same model.

Properties and classifications of a pump, a driver are the same for different pumps. The impeller has its own specialized template model. Different pumps can use the same impeller model. Suction and discharge use the model of the flange. This model is used for anything connected with flanges.

So specialized template models have a great amount of repetition.

If you don't use centralized models that are modeled well like that, we fall back to point-to-point mapping, of thousands of properties, on every new job new mapping. Nothing would be gained. In my opinion.

HansTeijgeler
Posts: 283
Joined: Sun Jan 22, 2012 10:02 pm

Re: AssemblyOfAnIndividual Template

#7 Post by HansTeijgeler »

Specialization of templates can easily lead to a combinatory explosion. It is like taking a fill-in-the-blanks data sheet and specialize that by filling in different values for one data field. For example a data sheet for control valves where you create 10 specialized data sheets by filling in the 10 different sizes.

There may be a need for specialization when the base template is considered to be too generic. PossibleIndividual, for example, is very generic, because it has various subtypes. In case, for example, you want to make 100% certain that the user only fills in the URI of an Activity, and not of a PhysicalObject, Event, or PeriodInTime (the other subtypes of PossibleIndividual), then you make a specialization in which you replace PossibleIndividual with Activity. For that reason you will not see any templates with Thing in a role.

Another, somewhat middleground, example is that you already fill in the URI for the 'barg' Scale in order to avoid that people fill in 'psig'. This is often also done on data sheets.

What should NOT be done is, for example, to specialize the ClassificationOfIndividualWithCompoundType template thousandfold by fixing the ClassOfCompound with a thousand URIs for different material types. This, of course, is an extreme example. Better is to provide software with a picklist.

KeithWillshaw
Posts: 77
Joined: Tue May 15, 2012 8:48 am

Re: AssemblyOfAnIndividual Template

#8 Post by KeithWillshaw »

OnnoPaap wrote:
KeithWillshaw wrote: My concern with using Specialized templates in the OIM is that we have a very large number of types of assembly and ending up with a specialized template for each. If we just consider a pump there could be hundreds of templates.
I don't agree.

A pump contains streams (suction and discharge). The stream model contains the fluid process data (min/nor/max conditions). Everything that contains a stream uses the same model.

Properties and classifications of a pump, a driver are the same for different pumps. The impeller has its own specialized template model. Different pumps can use the same impeller model. Suction and discharge use the model of the flange. This model is used for anything connected with flanges.

So specialized template models have a great amount of repetition.

If you don't use centralized models that are modeled well like that, we fall back to point-to-point mapping, of thousands of properties, on every new job new mapping. Nothing would be gained. In my opinion.
I understand your concerns so lets look at this example in more detail.

I wouldnt regard the streams as part of the pump assembly as you could substitute different streams and still have the same pump. That relationship is IMHO closer to a Containment so lets look at the ContainmentOfIndividual Template

Again we have 3 roles

1) hasContainer
2) hasContained
3) ClassofContainmentOfIndividual

Clearly we wish to constrain the type of Individual in Role 2) to be of Class 'Fluid Stream'

When I first saw references to this template my assumtion was that the role filler for role 3)
would do that. The role type is given as ClassOfContainmentOfIndividual so are you saying
that using the Class FLUID STREAM is OK as the role value ?

Similarly when I use the AssemblyOfIndividual Template I want to use Role 3)
to constrain the type of individual in hasPart. We have something of a problem here though.
if we take the example of Impeller. Its Superclasses are defined as ClassofInanimate Physical Object
and Artefact. This is true of may other Classes that engineers would regard as components such as BEARING, while others such as GLAND are more tightly classified (as STUFFING BOX COMPONENT CLASS)

So for Gland I could make the 3rd role as any Class that is a member of STUFFING BOX COMPONENT CLASS and my problem is apparently solved but I cannot do the same for BEARING or other components of the Assembly. I really want to avoid is having to add to the RDL a bunch of specialized templates but even If I decide to go down that route what value do I actually give to role 3 ?

Is it just the ID of the specialized template in the RDL ?
If so am I not breaking one of the cardinal roles by pointing to a tamplate from template role ?

Avoiding Point to Point modelling is of course a given and the IIP process is designed to provide a set of patterns that can be re-used by modellers at the sharp end. The IIP guys have been using AssemblyOfIndividual and I simply want to know what do I use for this role !

Keith

HansTeijgeler
Posts: 283
Joined: Sun Jan 22, 2012 10:02 pm

Re: AssemblyOfAnIndividual Template

#9 Post by HansTeijgeler »

Hi Keith,

Please look at the attached graph, in which I combined two templates, viz ClassOfContainmentDefinition and ContainmentOfAnIndividual.
The blue part is what you create in design, the ocre part is what happens in the real world
(normally you should use the TemporalPart version, but we already discussed that).
The green ClassOfContainmentOfIndividual is present in both templates, and is the link between design and real world.

I hope this explains it better. If not, feel free to ask more info.
Attachments
Containment-in-design-and-realworld.png
Containment-in-design-and-realworld.png (57.2 KiB) Viewed 16527 times

KeithWillshaw
Posts: 77
Joined: Tue May 15, 2012 8:48 am

Re: AssemblyOfAnIndividual Template

#10 Post by KeithWillshaw »

HansTeijgeler wrote:Hi Keith,

Please look at the attached graph, in which I combined two templates, viz ClassOfContainmentDefinition and ContainmentOfAnIndividual.
The blue part is what you create in design, the ocre part is what happens in the real world
(normally you should use the TemporalPart version, but we already discussed that).
The green ClassOfContainmentOfIndividual is present in both templates, and is the link between design and real world.

I hope this explains it better. If not, feel free to ask more info.
This is a very nice diagram but I am just an old fashioned piping engineer.

I understand how to enter values for Role 1 and Role 2 and the cardinality is no problem

The problem I have is knowing what you expect for Role 3

Now in the Case of ClassOfContainment I can look in the RDL and I find a usable definition
which is Fluid Containment (http://posccaesar.org/rdl/RDS913038041 )

In the case of ClassOfAssemblyOfIndividual there are no RDL entries so I need
to ask some questions to make sure we understand what is expected.

1) Is the Value the URL of a ClassOfAssemblyOfIndividual Definition in the RDL ?

2) If so does that URL need to resolve ?

3) If its not WHAT IS IT ?


Keith

Post Reply