Professional Documents
Culture Documents
SPF - Gentle Intro To SP Schema PDF
SPF - Gentle Intro To SP Schema PDF
Unpublished – rights reserved under the copyright laws of the United States.
Intergraph Corporation
Huntsville, Alabama 35894-0001
Warranties and Liabilities
All warranties given by Intergraph Corporation about equipment or software are set forth in your
purchase contract, and nothing stated in, or implied by, this document or its contents shall be
considered or deemed a modification or amendment of such warranties. Intergraph believes the
information in this publication is accurate as of its publication date.
The information and the software discussed in this document are subject to change without notice
and are subject to applicable technical product descriptions. Intergraph Corporation is not
responsible for any error that may appear in this document.
The software discussed in this document is furnished under a license and may be used or copied only
in accordance with the terms of this license.
No responsibility is assumed by Intergraph for the use or reliability of software on equipment that is
not supplied by Intergraph or its affiliated companies. THE USER OF THE SOFTWARE IS
EXPECTED TO MAKE THE FINAL EVALUATION AS TO THE USEFULNESS OF THE
SOFTWARE IN HIS OWN ENVIRONMENT.
Intergraph is not responsible for the accuracy of delivered data including, but not limited to, catalog,
reference and symbol data. Users should verify for themselves that the data is accurate and suitable for their
project work.
Trademarks
Intergraph, the Intergraph logo, PDS, SmartPlant, SmartSketch, FrameWorks, INtools, MARIAN, and
IntelliShip are registered trademarks and SupportModeler and SupportManager are trademarks of Intergraph
Corporation. Microsoft and Windows are registered trademarks of Microsoft Corporation. Other brands and
product names are trademarks of their respective owners.
ii
iii
Introduction
Have you heard the term SmartPlant integration or SmartPlant® Foundation
(SPF)? Here is what it is:
If that sounds like a lot, it is! Intergraph Process, Power & Marine (PPM), in
Huntsville, Alabama has been cooking up this next-generation, software-based
solution to integration for many years. SPF is in use at a number of large-
scale architectural and engineering (A&E) firms, worldwide. If you really want
to know why you should care about this stuff, spend a few minutes looking at
Appendix K.
SPF Overview
SPF is based on a "hub-and-spoke" model. A data repository is at the hub (and
it is worthy of a book or two), and each integrated software application is a
spoke. SPF is a "loose integration" solution that allows each software
application to maintain its own data model, independent of the SmartPlant
Foundation data model. The benefit of "loose integration" is the flexibility to
add or remove applications for any desired configuration of SPF.
iv
At the end of each spoke in SPF's hub-and-spoke model is an integrated
application that communicates with SPF via an "Adapter" component. Each
integrated software application uses their adapter component to publish and
retrieve "documents" of XML data to, and from SPF.
When SPF is rolling along, you won't think much is going on - it is quiet and
fuel-efficient. But there is really a lot of horsepower in the idea of total
system integration. The more you understand how the underlying architecture
works, the more you'll be able to apply the system to your complex business
problems.
You'll see that some of the ideas about the data model are so good (or so hard
to understand) that they are presented 2 or 3 times, in order to enhance your
learning experience and turn the "Aha!" switch in your brain to the "ON"
position.
v
Some things that will be mentioned, but not covered in detail in this book:
Also, I will not include a lot of complex "patterns" that appear in the
SmartPlant schema, e.g., the "process data" model, since that makes this book
more "fragile", since the schema can (and does) change, but a hardcopy of the
book will live forever. If you're looking for insight into:
- How and why is the SmartPlant schema put together that way?
- What is "data modeling"? Why do I need to understand that just to
add a couple of properties to my SPF?
- Help! I understand my database and my application software, but this
SmartPlant Foundation stuff is too complex! How do I begin to
understand what's going on?
- Is there an underlying architectural philosophy, or is SPF an enigma
wrapped in a data model?
...then this is the right place. Although you will not find the answer to specific
questions like: "how do I find a stream in the SmartPlant schema?", you will
find the patterns and philosophy used to build the SmartPlant schema,
hopefully, giving you an idea of where to start looking for the answers to
those types of questions. Before you start, you probably want to review the
"jargon" that is associated with this topic.
vi
Disclaimer
I'm not an author, I'm a data architect. I intend to "lighten-up" the topic of
the SmartPlant schema. Please begin this journey with a forgiving attitude,
and a little levity ;-} FYI, I am Doug.Hilton@Intergraph.com Please send
document comments or suggestions to PPMdoc@Intergraph.com
vii
Table of Contents
Introduction........................................................................................................................... iv
SPF Overview ............................................................................................................... iv
SmartPlant® Schema Overview ..................................................................................... v
How This Book is Organized......................................................................................... v
Disclaimer .................................................................................................................... vii
Table of Contents................................................................................................................ viii
Table of Figures .................................................................................................................. xiii
1. A Roadmap ........................................................................................................................ 1
Problem Definition......................................................................................................... 1
What the heck is a "Schema"? ....................................................................................... 1
2. The Origins of Data Modeling........................................................................................... 3
Why do we "model data"? ............................................................................................. 3
Lots of "Things" in the World ....................................................................................... 3
Data Lives Past the "Design Phase"............................................................................... 3
The Concept of a "Model" ............................................................................................. 4
Modeling "Anything"..................................................................................................... 4
Modeling Data ............................................................................................................... 5
Different "Views" of the Same Thing............................................................................ 5
A "Shared" View............................................................................................................ 6
The Definition of a "Data Model" ................................................................................. 7
Tool User's Perspective.................................................................................................. 8
Tool Adapters................................................................................................................. 8
Tool Map Schemas ........................................................................................................ 8
Conclusion ..................................................................................................................... 9
3. Classification of Objects .................................................................................................. 10
Sorting is a Way of Grouping Objects......................................................................... 10
The Linnaean Taxonomic Model................................................................................. 10
"Animal, Vegetable, or Mineral?" ............................................................................... 10
Shortcomings of the Linnaean Model.......................................................................... 11
Polymorphism .............................................................................................................. 11
The Linnaean Model Fails in the General Case........................................................... 12
If a Valve Could Talk (this is what it would say) ........................................................ 12
A Role-based View of Objects .................................................................................... 13
My Roles...................................................................................................................... 13
Zen-like Thinking about Objects (and their "-ness") ................................................... 14
The Elliot Ness-ness of Elliot Ness ............................................................................. 14
A Designer is Trying to Fulfill a Role ......................................................................... 15
4. Why Be Normal? ............................................................................................................. 16
Foundations of Data Normalization............................................................................. 16
What is Data Normalization?....................................................................................... 16
3NF, 4NF, 5NF - When is NF Enough? ...................................................................... 16
SmartPlant Foundation Data is 4NF and 5NF ............................................................. 17
Denormalization........................................................................................................... 17
viii
Where Interfaces Fit In ................................................................................................ 18
Baby, You Can Drive My Car ..................................................................................... 18
Orthogonal roles........................................................................................................... 19
5. An Introduction to Symbolic Logic ................................................................................. 20
Data Modeling Conventions ........................................................................................ 20
Symbols are Precise ..................................................................................................... 21
Unified Modeling Language (UML) ........................................................................... 21
Symbolic Logic............................................................................................................ 22
6. The SmartPlant Data Model............................................................................................. 23
The SmartPlant Schema............................................................................................... 23
SmartPlant Schema Rules ............................................................................................ 23
Lots of Structures......................................................................................................... 23
Overview of the SmartPlant schema Data Model........................................................ 24
SmartPlant schema Class / Interface / Relationship Model ......................................... 24
7. Defining an Interface (InterfaceDef) ............................................................................... 25
Review of Interfaces .................................................................................................... 25
Defining an Interface (InterfaceDef) ........................................................................... 25
InterfaceDef - Graphic Representation ........................................................................ 25
The <<Stereotype>> .................................................................................................... 26
8. Defining a Property (PropertyDef) .................................................................................. 27
What is a Property? ..................................................................................................... 27
What is a PropertyDef?................................................................................................ 27
"Scoping" a PropertyDef ............................................................................................. 27
Scoping Examples........................................................................................................ 28
Scoping Types.............................................................................................................. 29
InterfaceDef / PropertyDef Redux............................................................................... 29
9. Defining a Class (ClassDef)............................................................................................. 31
Idea of Instance ............................................................................................................ 31
Object Identity ............................................................................................................. 31
Model Definitions (ModelDef) .................................................................................... 32
It's Nice to Share (Objects) .......................................................................................... 32
Sharing Allows Changes.............................................................................................. 32
The SameAs Relationship ............................................................................................ 32
Shared object definition (SharedObjDef) .................................................................... 33
10. Defining a List of Values (EnumEnum, EnumListType) ............................................... 34
Enumerated Values (EnumEnum)................................................................................ 34
Enumerated Lists of Values ......................................................................................... 34
Enumerated Lists (EnumListType)............................................................................... 35
Varying Strengths of Enumerated Lists....................................................................... 35
Properties can be Scoped by Enumerated Lists ........................................................... 36
EnumEnum Short-Text and Long-Text........................................................................ 36
Multiple-level Enumerated Lists (EnumListType)....................................................... 36
Linking Enumerated Values to Interface Definitions (EnumMetadata)...................... 38
11. Defining Units of Measure (UoMEnum, UoMListType) ............................................... 40
Units of Measure (UoMListType) ................................................................................ 40
Unit of Measure (UoMEnum) ...................................................................................... 40
ix
SI Unit.......................................................................................................................... 41
Default SI Unit (HasDefaultSI) ................................................................................... 42
Units of Measure Conditions ....................................................................................... 42
"Any" UoM (AnyUoM) List......................................................................................... 42
12. The Implies Relationship (Inheritance).......................................................................... 44
Property Inheritance..................................................................................................... 45
Implies is a Transitive Relation ................................................................................... 45
Conversations re: Dog, Wolf, Mammal and Animal................................................... 45
"Things that have Legs"............................................................................................... 46
"Implies" and Relationship Inheritance ....................................................................... 47
"Optional" vs. "Required" Implies ............................................................................... 47
13. The Realizes Relationship.............................................................................................. 48
The Realizes Relationship............................................................................................ 48
The "Primary" Interface ............................................................................................... 48
14. Defining a Relationship (RelDef, Rel) ........................................................................... 50
The Relationship Definition (RelDef).......................................................................... 50
A Data Modeler Defines Marriage (hoo-boy!) ............................................................ 50
A Data Modeler Thinks About RelDefs....................................................................... 50
A Guru Ponders Marriage............................................................................................ 51
"Abstract" Relationship Definitions ............................................................................ 53
Introduction to Delete Propagation Semantics ............................................................ 54
"Concrete" Relationship Definitions............................................................................ 54
Invitation to a Wedding (Example of a Rel) ................................................................ 55
Introduction to Cardinality........................................................................................... 55
Which RelDef is Right for Me? ................................................................................... 56
Locality of Reference................................................................................................... 56
Shared Objects and Locality of Reference................................................................... 57
15. Unique Identifiers (UIDs) .............................................................................................. 59
16. Edges, Graphs, Views & Class View Map (EdgeDef, GraphDef, ViewDef,
ClassViewMap) .................................................................................................................... 60
Edge Definition (EdgeDef) .......................................................................................... 60
Graph Definition (DirectedGraphDef) ........................................................................ 64
Technical Details of Graph Definition (DirectedGraphDef)....................................... 64
View Definition (ViewDef) .......................................................................................... 64
Class View Maps (ClassViewMap) ............................................................................. 66
17. UML Concepts (Elaboration) ........................................................................................ 67
The Most Important Concepts of the SmartPlant schema Data Model ....................... 67
Interface Polymorphism............................................................................................... 69
Reasons for using Interfaces ........................................................................................ 69
18. Examples of Class and Interface Models....................................................................... 71
Another Example of an Interface Relationship Model ................................................ 72
Example of the RelDef Labeled "Children"................................................................. 72
Review of RelDef......................................................................................................... 73
19. The SmartPlant "Meta Schema" .................................................................................... 74
Technical Description of the SmartPlant Meta Schema .............................................. 74
Relationships between Schema Elements.................................................................... 75
x
Informal Rules ............................................................................................................. 75
The SmartPlant Schema Editor.................................................................................... 76
More Powerful than a Speeding Bullet? ...................................................................... 76
20. SmartPlant schema Files ................................................................................................ 77
Component Schemas (CompSchema) .......................................................................... 78
A Shared Pipeline ........................................................................................................ 80
Existing Component Schemas ..................................................................................... 81
Technical Description of Component Schemas........................................................... 81
21. XML Files Overview ..................................................................................................... 83
SPF Documents are in XML Format ........................................................................... 83
SmartPlant schema Helps Organize XML Files .......................................................... 83
22. Patterns........................................................................................................................... 85
Example of a Real-World Model................................................................................. 85
Review of Class, Interface, Property and Relation ...................................................... 85
SmartPlant schema Complexity Breakdown ............................................................... 86
Vessel/Nozzle/Pipe run Drawing................................................................................. 86
An Object Diagram ...................................................................................................... 86
Excerpt from the SmartPlant schema........................................................................... 87
Sample XML file ......................................................................................................... 88
"Part" vs. "Occurrence"................................................................................................ 89
RelDef Patterns............................................................................................................. 97
Composition relationships ........................................................................................... 97
Collection relationships ............................................................................................... 97
Plant Breakdown Structure .......................................................................................... 98
Work Breakdown Structure ......................................................................................... 98
Naming Conventions ................................................................................................... 98
23. SmartPlant Architectural Model .................................................................................. 100
The Underlying "Architectural Model" ..................................................................... 100
Here is the "Facility model"....................................................................................... 100
Here is the "Material model" ..................................................................................... 101
Facility and Material Models ..................................................................................... 101
Facility and Material Model Summary ...................................................................... 101
24. Schema "Evolution"..................................................................................................... 102
25. Schema Reading Practice............................................................................................. 103
UML Reading Practice for ClassDefs........................................................................ 103
UML Reading Practice for InterfaceDefs .................................................................. 110
A Child's Poem .......................................................................................................... 111
26. Secrets of the SmartPlant schema Master.................................................................... 112
Model InterfaceDefs First (Data Normalization)....................................................... 112
Organizing Lots of Pump Properties.......................................................................... 113
What's the Spin on Rotating Items? ........................................................................... 113
The Results of "Normalizing" a Pump....................................................................... 114
How Interfaces Help to Tame Polymorphism ........................................................... 114
Ideas about ClassDefs ................................................................................................ 117
Naming ClassDefs ..................................................................................................... 117
Ideas about Enumerated Lists (including EnumListLevelType)................................. 118
xi
Incomplete Hierarchies .............................................................................................. 119
Beating Enumerated Lists into Enumeration Hierarchies.......................................... 120
Cutting Across the Grain with EnumListLevelType................................................... 120
Scoping with an EnumListLevelType......................................................................... 121
The View from the Top of the Mountain................................................................... 124
Appendix A. Rules of Data Normalization....................................................................... 125
Appendix B. Linnaean Taxonomic Model........................................................................ 126
Summary .................................................................................................................... 128
Appendix C. Schema Element Definitions ........................................................................ 129
Appendix D. Definitions, Acronyms and Abbreviations................................................... 138
Appendix E. Some Properties of a Pump........................................................................... 142
Appendix F. Normalized Properties of a Pump ................................................................. 150
Appendix G. Piping Component Type Hierarchy.............................................................. 158
Appendix H. Some UML Diagrams .................................................................................. 171
Figures for Chapter 25, "UML Reading Practice for ClassDefs" .............................. 171
Figures for Chapter 25, "UML Reading Practice for InterfaceDefs" ........................ 172
Appendix I. Equipment Property Spreadsheets ................................................................. 178
Appendix J. SmartPlant Meta-Schema Objects ................................................................. 186
Architecture objects ................................................................................................... 186
Schema objects........................................................................................................... 186
Software objects......................................................................................................... 186
Appendix K. SmartPlant Schema Rationale ...................................................................... 188
Appendix L. The TEST...................................................................................................... 189
Index .................................................................................................................................. 190
xii
Table of Figures
Figure 1 A Picture of a Model of a Car and a Picture of an Actual Car ................................ 4
Figure 2 A Role Playing Game is a Model of World Events................................................. 5
Figure 3 Different Views of a Valve...................................................................................... 6
Figure 4 Symbols Representing Human, Man, Woman ...................................................... 20
Figure 5 The Symbol for the IMan Interface ....................................................................... 21
Figure 6 An InterfaceDef as a Rectangle............................................................................. 25
Figure 7 An InterfaceDef as a Circle ................................................................................... 26
Figure 8 Sample InterfaceDef, PropertyDef, EnumListType .............................................. 30
Figure 9 The Symbol for a Class Definition (ClassDef)...................................................... 31
Figure 10 Example of Shared Objects ................................................................................. 33
Figure 11 The Symbol for an Enumerated Value (EnumEnum).......................................... 34
Figure 12 The Symbol for an Enumerated List (EnumListType)......................................... 35
Figure 13 The Symbols for a Populated Enumerated List................................................... 35
Figure 14 Enumerated Lists and Enumerated Entries.......................................................... 37
Figure 15 Units of Measure Example .................................................................................. 40
Figure 16 A Taxonomy of a Dog......................................................................................... 44
Figure 17 A Dog Realizes that It's a Wolf, too .................................................................... 48
Figure 18 A Relationship Between Man and Woman ......................................................... 50
Figure 19 RelDef Model....................................................................................................... 56
Figure 20 Vessel with Nozzles (Conceptual)....................................................................... 62
Figure 21 Vessel with Nozzles (SmartPlant schema) .......................................................... 62
Figure 22 EdgeDef Example of Numeric Position .............................................................. 63
Figure 23 EdgeDef Example of Property Comparison ........................................................ 63
Figure 24 Sample of a Directed Graph ................................................................................ 64
Figure 25 ViewDef ............................................................................................................... 65
Figure 26 Class Diagram for MAN ..................................................................................... 71
Figure 27 Class Diagram for WOMAN............................................................................... 72
Figure 28 the Mother-Son Relationship............................................................................... 72
Figure 29 Types of SmartPlant schema Files ...................................................................... 77
Figure 30 Classes That Are in the P&ID Component.......................................................... 79
Figure 31 A Shared Pipeline ................................................................................................ 80
Figure 32 Vessel/Nozzle/Pipe run from P&ID Drawing ..................................................... 86
Figure 33 An Object Diagram of Vessel/Nozzle/Pipe run................................................... 87
Figure 34 Vessel/Nozzle/Pipe run in SmartPlant schema.................................................... 87
Figure 35 Pattern for "Part" and "Occurrence".................................................................... 92
Figure 36 Properties of an Equipment-as-a-Part.................................................................. 94
Figure 37 Properties of Equipment-as-an-Occurrence ........................................................ 95
Figure 38 A 1/2 HP Pump.................................................................................................. 112
Figure 39 Classes that are Polymorphic with respect to IRotatingItem............................. 115
Figure 40 Top-level of Instrument Type Hierarchy........................................................... 118
Figure 41 Second-level of Instrument Type Hierarchy ..................................................... 118
Figure 42 Leaf-nodes in the Instrument Type Hierarchy................................................... 119
Figure 43 "IPipingComponent" InterfaceDef .................................................................... 120
xiii
Figure 44 Hierarchical Dependence for Piping Component Types ................................... 121
Figure 45 3 Levels of Scoping ........................................................................................... 123
Figure 46 "IPipingComponent" ......................................................................................... 123
Figure 47 Example of Linnaean taxonomic model............................................................ 127
Figure 48 ClassDef ............................................................................................................ 129
Figure 49 ClassDef Class................................................................................................... 129
Figure 50 EnumEnum ........................................................................................................ 130
Figure 51 EnumEnum Class............................................................................................... 130
Figure 52 EnumListType .................................................................................................... 131
Figure 53 EnumListType Class .......................................................................................... 131
Figure 54 InterfaceDef....................................................................................................... 132
Figure 55 InterfaceDef Class ............................................................................................. 132
Figure 56 PropertyDef ....................................................................................................... 133
Figure 57 PropertyDef Class ............................................................................................. 133
Figure 58 RelDef ................................................................................................................ 134
Figure 59 RelDef Class ...................................................................................................... 135
Figure 60 UoMEnum.......................................................................................................... 136
Figure 61 UoMEnum Class................................................................................................ 136
Figure 62 UoMListType ..................................................................................................... 137
Figure 63 UoMListType Class ........................................................................................... 137
Figure 64 UML Diagram of EQDFan............................................................................... 171
Figure 65 Interface Diagram 1 - Agitator Part & Occurrence Model................................ 172
Figure 66 Interface Diagram 2........................................................................................... 172
Figure 67 Interface Diagram 3........................................................................................... 172
Figure 68 Interface Diagram 4........................................................................................... 173
Figure 69 Interface Diagram 5........................................................................................... 173
Figure 70 Interface Diagram 6........................................................................................... 174
Figure 71 Interface Diagram 7........................................................................................... 174
Figure 72 Interface Diagram 8........................................................................................... 175
Figure 73 Interface Diagram 9........................................................................................... 176
xiv
1. A Roadmap
It begins - a journey into something that is considered to be very difficult
by many people. Fact is, most folks would rather have their finger nails
gnawed on by a hungry badger than delve into this subject. The answer as to
why you're reading this is up to you, but I hope that this document clears up
many aspects of the SmartPlant schema. Intergraph PPM has spent years,
working on a way to fully integrate disparate software systems. That is a
very complex subject, and would require several large volumes to really
explain properly.
Problem Definition
The SmartPlant Enterprise suite allows many different software "tools" to
communicate in an intelligent way about the kinds of things that are in your,
e.g., process plant, ship, or other large-scale facility. A lot of companies
have tried to do this, and some have been successful, to varying degrees.
Intergraph PPM has worked out a "practical" way to do complete integration,
based on the idea that individual software "tools" don't have to change a lot,
but they must simply learn how to "map" their idea of "things" to and from a
"global" idea of "things", e.g., some program calls a thing a "Pump", and
another program calls it an "Equipment" and still another program only thinks
only of the dimensions of the base of the pump, so that it can be properly
attached to the deck.
1
they have in common, e.g., a motor, a pump, a valve, etc. But it is really not
simple at all. That's because each system has its own idea of what things
are, and how they are used. A "schema" is simply another way of saying "a
diagrammatic representation, an outline, or a model."
Before you can understand the SmartPlant data model, you have to
understand some very basic concepts (if you already know this stuff, please
apply for a job in my department).
I'll try to make your journey fun, but wait! I think I hear the familiar TV
voice of Rod Sterling saying: "That's the signpost up ahead -- your next
stop: The SmartPlant Schema Zone"!!
2
2. The Origins of Data Modeling
SmartPlant Foundation (SPF) is based on the idea that many software
programs need to share common sets of data. That is an opportunity, and a
burden, since each program was developed independently, and yet now needs
to share the data in an intelligent manner. To make sure that all the
programs are talking about the same thing, we use a "model" of an idealistic
world, which follows strict rules, so that each program can talk to each
other through a common base in a predictable way. Let's see what that
means.
3
http://www.intergraph.com/smartplant/3d/Productivity_Gains_with_SmartP
lant_3D.asp).
The Guru says: "models are used to convey the essence of what you're
talking about. Sometimes, some important information can be lost, and a
model is still OK." (¿que? what did he mean by that?)
Listen up: a model of a car isn't something that you really get into and drive
to the office, but it is "real-enough" that you make the mental leap that it
represents a car strongly enough that you can actually "pretend" to drive
the car to work. As a child, you probably played with lots of real-world
models that let you see how things work, without putting you behind the
wheel of a real car when you could not even reach the pedals.
Modeling "Anything"
The idea of "modeling something" doesn't stop with making physical models.
Popular interactive role-playing games are good examples of modeling "world
events" in real-time.
4
Figure 2 A Role Playing Game is a Model of World Events
A model of a monster lunges, and you push a button on a game pad, and bang!
the "monster" is "dead." Fighter pilots train in simulators, which model the
exact action of the plane, and might "crash" many times without harming
anyone. Modeling is all around us.
Modeling Data
If you think about the problem of integrating data from a lot of different
software applications, you can understand how a "model" of the data that is
being passed around might be a good way to simplify the discussion of "how
do I get that valve from a P&ID (piping diagram) into my 3-D program?"
A "model of a valve" is not a valve, but it can expose many aspects of a valve,
e.g., its flow-rate, its weight, its inlet size, etc. Some other program may
not care about any of that, and just wants to talk about the height of the
valve, or about who carries the valve "in-stock", so that it can be ordered
quickly.
5
Figure 3 Different Views of a Valve
A "Shared" View
Each SmartPlant Enterprise software program, a.k.a. "tool" has some
conceptual model of a valve. When we say "tool", we're talking about:
6
- SmartSketch® for producing engineering drawings from conceptual
layouts to detailed equipment drawings to installation details and
more.
- ...and other SmartPlant Enterprise "enabled" tools, e.g., Aspen Zyqad.
No one tool cares about "all" the possible properties of a valve. So how do
we "share" the data about "this particular valve" between tools? The Guru
replies: "make a "model of a valve", and share that between the tools!"
7
- Rules for evolving the schema, so changes to the structure and
semantics of the data can be made due to new or changing
requirements.
- Specific support for engineering concepts such addressing process
data, relationships between equipment and nozzles, and so on.
Tool Adapters
Each authoring tool that is part of SmartPlant Enterprise has an authoring
tool "Adapter", which facilitates the sharing of data between the authoring
tool and SmartPlant Enterprise. Tool adapters generate XML files for
"publish" operations, and consume XML files for "retrieve" operations.
Best practices recommend that every authoring tool that integrates through
SmartPlant Enterprise provide the ability to map to and from the
SmartPlant schema. However, special cases exist where the exchange of
data is "hard-coded". For more information about authoring tool mapping,
8
see the SmartPlant Schema Mapping Guide, delivered with the SmartPlant
Foundation (SPF) documentation.
Conclusion
The Guru opines: "Once you have seen a few model cars, you get the picture.
Once you have seen a few models of data, you'll get that picture, too!"
9
3. Classification of Objects
Humans seem to be able to naturally classify things. If you put a big handful
of coins down in front of most people, their first instinct is to sort them
into groups - pennies, nickels, dimes, etc., going into separate groups. It's
just easier to think about things that are somehow grouped properly. That's
an interesting topic - how do people "group things"?
10
"ahem! Minerals are classified by chemical composition in a similar manner,
based on the dominant anion, or anionic group" and then he falls back into a
trance).
Polymorphism
Polymorphism? What? Before you hit the web, let me look that up for you.
A quick search reveals that generally polymorphism is the ability to appear in
many forms. Let's apply this to our valve. Take a look back at the images in
Figure 3. Moreover, a valve can be more than those images shown there, and
that's an important point. For example, here's a few:
- A valve that you think about ("we'll need a valve in that pipeline so that we
can control the flow to the storage tank")
- A valve that you order from a catalog (let's get a pinch valve from the Clow
catalog)
- A valve that you put on a P&ID as an image (look at V-100 on the P&ID)
- A valve that has weight and center of gravity (for a ship, this is important)
- A valve that has dimensions (the inlet and outlet diameters are 8")
- A valve that has a history of failure and was rebuilt last month (valve serial
number 10223 is back from rebuild)
- A valve that you will need next time, because you needed it this time (we
predict that we will need 40 of these valves, because last time we needed
40)
- A valve that you walk up to and put your hand on (this is the valve that is
shown on the P&ID as V-100)
- A mechanical device that controls fluid flow in a pipeline
11
Looks safe to say that our valve fits the general definition of polymorphism,
but as I look again, I see that polymorphism also means allowing a single
definition to be used with different types of data (specifically, different
classes of objects). That sounds good, but does this apply to our valve?
Sure does! Let's say that the valve forms mentioned above have sets of
similar properties but they are modeled as different classes, e.g.,
ConceptValve, CatalogValve, P&IDValve, etc., Polymorphism allows us to take
the sets of common properties, define them on a single interface, e.g.,
IValve, and realize this interface from any number of different classes.
This way, it doesn't matter which class we're talking to, we can refer to the
IValve interface. This is an important point. We will cover it in more detail
later.
Uh oh! How can we all think different things about a "valve", and come to
some conclusions and agreements before we have fluid flowing through it?
Let's try a different approach: instead of us guessing at the Linnaean
taxonomy of a valve, how about if we let the valve "tell us what it is", and
we'll just listen carefully.
12
- My inlet side is an 8" opening. My outlet is on the other side, and offset
2", it is also an 8" opening.
- I had a small leak last month. I was sent back to the manufacturer and
repaired. I can be reinstalled whenever you take me off this shelf in the
warehouse.
- In the process plant that you built last year, you used 40 valves exactly
like me. When you design the next plant, try to remember that.
- My serial number is VZ-012345. I was manufactured on January 4, 2005.
- I'm a mechanical device. I have certain mechanisms that are used to
control the flow of fluid through a pipeline. My design pressure is 200 psi.
The Guru jumps up and shouts: "Instead of you trying to guess whether it
is animal, vegetable, or mineral, the object just tells you!"
Yipes!! You have to admit that that's a real powerful idea.
My Roles
I'm thinking of myself for a minute. What roles do I expose to the
universe?
- I am a man
- I am a taxpayer
- I drive an automobile
- I am married (to a nice woman)
- I work at Intergraph PPM
- etc.
13
As we look at each of these "roles" that I present to the universe (a.k.a.
roles that I "Realize" that I provide to the universe), they begin to classify
the way that I participate in relationships with others people, or entities in
the universe:
- As a taxpayer, I have some properties that the IRS and State of Alabama
are interested in (how much money does he make?)
- As a driver, I should have been tested, and acquired a Driver's License
- Since I am married, and a man, I am a husband
- Since I work at Intergraph PPM, I have an office, a phone number that is
different from home, and an employee id number.
...and so on. Each of these roles can be used to form relationships to
whomever cares about that aspect of me. The IRS doesn't care how much I
weigh (yet), and the Driver's License bureau doesn't care about how much I
earn (yet). They all can concentrate on what they like the best, when they
want to form ideas about "who is that person?" and "what can we expect
from him?"
This sounds like "zen" philosophy, but I heard the Guru says that it is
critically important for your understanding of the ways of the universe.
Look at Figure 1 and you will agree: any child can point to a car, a model of a
car, a picture of a car, a picture of a model of a car, or a simple line-drawing
from a 3-year-old, and say "car." It's because the "car-ness" of a car is
totally apparent to the most casual observer! The thing that makes
something a thing is it's "thing-ness", where you can just fill in the blanks.
14
been lost to history. Only his name and one particularly interesting property
survive to this day and are the basis of his legend.
15
4. Why Be Normal?
As a philosopher once (should have) said: "Many objects can yield up many
roles to the universe. Therefore, some important ideas might get lost in the
noise." If you are trying to think about all the roles that you yield up to the
universe - good luck! As long as you exist, and even past that, you will
perform some roles. You can't possibly list all of your roles.
If you get pulled over for speeding, the officer probably doesn't want to
know your taxpayer id, or your hat size, he wants to know your driver's
license number (and expiration date). Thinking in these terms, and with all
the roles that you expose to the universe, how can you just expose the
"right" role to Patrolman I. M. Donut? You probably reach for your wallet, or
purse, because that's where you group information that is relevant to your
identity. From within that mass (mess?) of stuff, you pick out your driver's
license. That kind of process (of grouping important data together for easy
retrieval) is what computer geeks call "data normalization."
16
empires on producing 3NF databases for us to use. But it turns out the
"best" approach doesn't stop there. Therefore, many advanced systems use
4NF and 5NF data base architecture. While this may sound pretty geeky, it
is an important point when it comes time for looking at e.g., a "polymorphic"
valve. The Guru alleges: "The designer and the valve communicate best when
they say the least to each other, and when that communication consists of
very focused ideas about what's going on. The higher-number normalization
is better for tighter, more unambiguous conversations."
Denormalization
If we can "normalize" data, can we "denormalize" data? You betcha! Let's
try thinking about a computer - it has memory. Humans have memory.
Should we make a common "role" for memory, which both computers and
humans realize? Maybe - and that's a firm answer.
There are a lot of factors that a data modeler uses to decide which things
to "normalize" and which things to "denormalize." In the example of
modeling "computer memory vs. human memory", you should be thinking of
the poor soul who will retrieve the data that you published about "memory."
Generally, are the two ideas really closely related? If so, then they should
be bound together tightly (as a common role), and assigned to their own role,
or "interface". If they are not so close, you can just put them on different
interfaces as "properties", and name them, e.g., HUMAN_MEMORY, and
COMPUTER_MEMORY. The goal of the data modeler is to try to minimize
ambiguity, and sometimes that's a very difficult task.
17
Where Interfaces Fit In
Interfaces are just convenient "places" to group the tightly-bound
properties of a role. That's a mouthful, but you should be getting the idea
by now:
- A role is something that an object yields up to the universe, e.g., "I
am a driver, here is my 'driver-ness'."
- It (a role) consists of closely-related properties, e.g., driver's
license number, expiration date, restrictions, picture.
- That you purposefully keep together, e.g., the on a driver's license,
in your wallet, in your purse, in your car (hopefully).
- Because it (a role) makes data retrieval easier, and less ambiguous,
e.g., for Officer Donut, whom we do not want to slow down a lot.
- If you want to get more technical - an interface is a named table of
property definitions that are role-based.
18
Orthogonal roles
How did someone know to go to the "Driver" interface, instead of
"Taxpayer" interface? The role of "Driver" is said to be orthogonal to the
role of "Taxpayer." Orthogonal ? What? I'm already searching...
Orthogonal means "having a set of mutually perpendicular axes; meeting at
right angles." OK, let me search again..., in simple terms, that means that
facts about "driver-ness" and facts about "taxpayer-ness" are unrelated.
This is a powerful idea for grouping data!
The Guru claims: "At least, by now you know why we have a data model in
SmartPlant Foundation (SPF):
19
5. An Introduction to Symbolic Logic
In Figure 4, below, we see the idea of (a model of) a "human" a "man" and a
"woman".
Thinking about those three "roles", and some possible relationships that can
be formed between them:
20
exchanger" - what are the easily-understood symbols for those? So let's
just state for the record that one of the functions of a data model is to
present things in a symbolic form, therefore, lets just come up with a symbol
that generally represents any role. How about this:
Now, the Guru gets snippy: "If you are going to use the SmartPlant schema
to exchange data with your computer system, you must learn how to read
these symbols accurately! They represent a very accurate view of the data
model, but it won't do you any good if you think that it means "A", but it
really means "a". Model diagrams consist of circles, lines, rectangles, etc. It
is very important that you understand exactly what they mean."
21
comprehend and digest the complexities of the SmartPlant schema. This
document will present a real world example of how the relationships between
graphics and data generated by an application are captured into the
SmartPlant schema.
Symbolic Logic
UML is used as a symbolic framework upon which we express the ideas that
we are modeling. Even an experienced data modeler needs to know what
symbols represent what ideas, but then it's Katie bar the door! The precise
nature of the symbols (and symbolic logic, in general) virtually guarantees
that ambiguity is minimized, and accuracy is maximized. Once you know that
Figure 5 represents an interface, you know what to expect every time you
see one of those circles. That's a real powerful idea!
22
6. The SmartPlant Data Model
The SmartPlant Schema
The SmartPlant schema describes the structure of data passed through
SmartPlant Enterprise, along with its rules. The SmartPlant schema can be
hard to understand, but to make it easier to interpret, the Schema
Component exists. That is a set of .dll's that assists the tools with the
generation and subsequent parsing of the XML data. The tool adapter
interfaces with the Schema Component (the main interface point) to read
the SmartPlant schema.
Lots of Structures
The SmartPlant Foundation data model consists of many structures (see
Appendix J) that make it easier for programs to talk to each other. The
SmartPlant schema is an XML file that describes the structure of the XML
files generated by the authoring tools in much the same way as a data
dictionary describes the structure of a database As tools publish
documents in XML format, those documents must adhere to the format
defined by the SmartPlant schema to ensure that the XML data can be
loaded into SmartPlant Foundation (SPF), and retrieved into the other
authoring tools. Here are some of the important concepts that we will cover
in this chapter:
23
- Component Schemas (CompSchema)
- Interfaces and InterfaceDefs
- Properties, PropertyDefs and Property Types (Scoping)
- Enumerated lists
- Units of measure
- etc.
24
7. Defining an Interface (InterfaceDef)
Review of Interfaces
The Guru maintains "Remember: an "Interface" represents "roles" that an
object wishes to expose to (yield up to) the universe." It is a handy
"collector" of very similar properties about some particular aspect of an
object (due to data normalization). An Interface is a thing that provides a
linkage between two things.
The main point of an interface is that some underlying object can tell the
world that it is willing to put forth (yield up) a certain "role", that other
roles may wish to query, report on, or form relationships with. "All of you
who are wearing sandals today, raise your hand" is the same as some query
finding the "ISandal" interface realized by a class (in a published document).
If the "ISandal" interface exposes the "ShoeSize" property, so much the
better for the reporting program that cares about ordering size-15 sandals.
25
Figure 7 An InterfaceDef as a Circle
In Figure 6, the data modeler is trying to show you all the properties that
the InterfaceDef exposes.
The <<Stereotype>>
Notice the first line of text <<InterfaceDef>>. That style of printing (in
UML terms) is called "stereotyping." You don't know about it much now, but
a stereotype is a mechanism that is used to categorize an element in some
way. A stereotype name is surrounded by Guillemots << and >>. Stereotypes
are used to extend the UML notational elements, to classify and extend
associations, inheritance relationships, classes and components. Stereotypes
are used to create new kinds of modeling elements. That's one of the
reasons that UML is so powerful, it is easily extended. Enough about
stereotypes.
In Figure 7, the data modeler is putting less emphasis on the properties, and
is just stating (to you, the viewer) that the InterfaceDef exists.
26
8. Defining a Property (PropertyDef)
In Figure 6, you saw that an InterfaceDef exposes some properties to the
universe. In fact, doing a double-take, you should have noticed that there
are pairs (tuples) of values:
- UID=IPumpOcc
- Name=IPumpOcc
- Description=An equipment item for transferring kinetic energy to a
fluid
- PropCategory=Equipment
- DisplayName=Pump
What is a Property?
The Guru Googles some expert definitions:
That's the idea that we tried to explain back in Chapter 3, when we talked
about the Zen-like properties of objects, i.e., cars have some kind of
essential property that is "car-ness"; a valve has "valve-ness", etc.
What is a PropertyDef?
If you tightly-group very-similar properties together ("normalize them"),
and expose them to the universe, it is more likely that someone who is
wanting that set of properties will see and understand what you are trying to
do. The little machine that handles the grouping and exposing to the
universe is the InterfaceDef. The little machine that carries the -ness of a
property is a PropertyDef.
"Scoping" a PropertyDef
If we're talking about an inlet on a valve, it has some interesting properties:
27
- Inlet Size
- Maximum Flow rate
- Material of construction
- Orientation-angle
- Description of the valve
- etc.
Scoping Examples
In the SmartPlant schema, we say that a PropertyDef is "scoped by"
something. That something defines the "units", or "lists", or "type of thing"
that the PropertyDef will allow to be passed between applications, e.g.,
- With respect to "Inlet size", the values that we agree can be passed
between our applications are length-units. Therefore we "Scope" the
PropertyDef "InletSize" with "LengthUoM", which contains {inches,
feet, meters, ...}.
o PropertyDef InletSize is ScopedBy LengthUoM
- With respect to "orientation-angle", we agree that we're going to
exchange angles
o PropertyDef OrientationAngle is ScopedBy AngleUoM, which
contains {deg, gr, rad, ...}
- With respect to material of construction, I will pick a value from a
list, and later on, I will hand you the list.
o PropertyDef MaterialOfConstruction is ScopedBy
EnumListType 'Materials', which contains {Iron, Copper, SS314,
...}
28
- With respect to the Description,
o PropertyDef Description is ScopedBy string
Scoping Types
The Guru looks right through you and says "So you see that "scoping" a
PropertyDef is simply the equivalent of restricting data input values to
certain "types"?
Finally, the Guru shouts: "You will attain great levels of understanding when
you realize that InterfaceDefs Expose PropertyDefs, which are ScopedBy
Property Types!" Let's try reading Figure 8, a sample schema, and see how
we do...
29
Figure 8 Sample InterfaceDef, PropertyDef, EnumListType
Note that in the SmartPlant schema, InterfaceDef names begin with the
letter "I", by widely-accepted convention.
30
9. Defining a Class (ClassDef)
For example, if your program normally creates equipment data sheets, you
can expect to "publish" a document, which contains instances of Classes
(that were defined by ClassDefs) which represent pumps, motors, stairs,
etc.
Idea of Instance
Let's see how good you are at understanding this: an instance of a class that
was defined as a ClassDef named 'ELEWire' can be published, and is
expected to contain data that is the electrical system's idea about a wire.
Did you figure out the "instance" word? Think: "I am an instance of a human
being" and you'll get the picture. The Mustang that is parked in front of
Wal*mart is an instance of a car, and an instance of a Ford.
Object Identity
We know how Ford keeps track of "instances of Mustangs" - each one gets a
serial number, a.k.a. VIN. Same idea in the SmartPlant schema - all objects
get a unique id (UID), which is Exposed by the "IObject" InterfaceDef. In
addition to the obvious things, like pumps getting a UID, every object in the
31
entire schema gets a UID - everything. All relationships are then formed
between two UIDs.
Another way of saying it is "each tool adds more value to the design by
adding more and more information to the pump."
32
published, another tool can retrieve the object, modify it and publish it as a
different object (with a different UID). The two publishes establish a
"SameAs" relationship (what that actually means is that the tools do the
correlation). This indicates that the object from the first tool is the same
as the object from the second tool.
Look at Figure 10. It shows that many software tools can retrieve, modify,
and publish "instruments", because they are in the "SharedInstrument_PM"
model, meaning that they are "Planned material".
33
10. Defining a List of Values (EnumEnum,
EnumListType)
34
schema Control Board (CCB), plus a separate Enumerated List Change Control
Board to help control the consequences of changes to enumerated lists.
Now, let's add some enumerated values to the enumerated list in Figure 12:
Figure 13 shows that the enumerated list named "AC/DC" contains 2 values,
viz., "AC" and "DC". I hope that it's obvious what's going on. Do you see the
stereotyped relations between the EnumListType and the two EnumEnum
entries? The stereotype <<Contains>> simply means that the list contains the
entries.
If you don't have a clue about what values might appear, just use a "string-
type" property, and don't worry about what is published ("name" is a good
35
example, since, according to one source, there are 9 billion of them [thanks
ACC]).
36
enumerated lists and enumerated entries. However, I'd skip it if it's late in
the afternoon.
37
hierarchy, the "EnumListType" object will realize this optional interface.
The topmost node in an enumerated list hierarchy is an instance of the
"EnumListType" class definition. This instance does not realize
"IEnumEnum" since it is not an enumerated entry.
38
IFluidTransferMachine, IPump, ICentrifugalPump, IVerticalCentrifugalPump.
Maybe the program only knows about general concepts of process equipment,
in which case, it realized "IProcessEquipment", maybe it is more detailed in
its knowledge, but in any case, we don't lose semantic information about
object type-ness.
That's a powerful idea for sharing data between tools that don't have
the same level of knowledge about objects!
39
11. Defining Units of Measure (UoMEnum,
UoMListType)
Units of Measure (UoMListType)
40
Check out Example 1, below: If the base is "Ampere", and the target unit is
"mA" (= 1/1000th of an ampere), the A-conversion factor is "1000", and the
B-conversion factor is 0. Because: it takes 1000 milliamps to equal 1
Ampere, the base "SI" unit.
SI Unit
International System of units (SI), is the metric system of measurement.
You can read about it here. Examples of SI units include: Ampere, Volt,
meter, gram etc. Using the SmartPlant schema, the given unit (x) is
multiplied by A, and then B is added to that value to determine the SI value
(y = Ax + B).
41
Default SI Unit (HasDefaultSI)
Also note in Figure 15 that there is a relationship, with a stereotype of
<<HasDefaultSI>> that defines which entry in the table is the "base" or "SI"
unit. When performing a conversion, everything gets converted to this,
first. For example, if you publish a length of 1 inch, it will get transformed
to the default SI unit, which, for length, is "meter" (SPF actually stores
both values, i.e., the "as-published" value, and the "converted" value).
Also, remember that you can't easily add values to a UoM list, because the
retrieving application isn't expecting the new value. If you got a new unit
"grex", and you were expecting {yard; foot; inch} what would happen?
42
remote from the sensor that performs a measurement. The meter may be
switched from one sensor to another, depending on operator preference.
Can we change the meter to read "volts" now, and "pressure" later? The
answer is "sure", because we realize that the meter is probably just a 0 to
some-value general-purpose meter anyway. Somewhere a microprocessor is
converting volts, or current, into units that get displayed on the meter, so
the meter units are not very relevant. If a sensor changes value from 0 to 2
volts when the temperature changes from -100 to +100, the meter simply
"scales" that range (reduces the difference between -100 and +100 to a
range of 0 to 2), and displays the result. In other words, the "scaled" meter
doesn't know if you want to see Joules per hour or kilograms per second.
43
12. The Implies Relationship (Inheritance)
The idea that a dog inherits some characteristics of a wolf is a pretty
obvious, and we can model that concept. It goes back to the Linnaean
taxonomic model and a simplified model might look like this:
Figure 16 says "if something claims that it is a dog, i.e., fulfills the role of
being a dog, then that claim also implies that it is a type of wolf, which
implies that it is a type of mammal, which implies that it is a type of animal."
- Is a kind of
- or Requires this set of properties to complete it's existence
Notice that the Implies relationship has a "1" on one end and a "2" on the
other end. "1" and "2" represent "ordinal" numbers on a relationship.
44
Ordinal numbers have to do with the "order" in which things appear. The
end with a "1" is the "source", or "child" in the relationship, and the end with
a "2" is the "destination", or "parent" in the Implies relationship. In other
forms of UML, e.g., the Rational Rose UML tool, there is usually an arrow,
which points from source to destination.
Property Inheritance
The InterfaceDef at the "end-1" inherits all the properties of the
InterfaceDef at the "end-2", all the way up the tree. NOTE: your published
data doesn't get properties by implying an interface; rather, to get the
properties, you must realize the InterfaceDef.
To make it simpler, since we were kids, we learned that we are our mother's
child, and, therefore, her mother is our grandmother.
45
"Things that have Legs"
Look at Figure 16 again - let's think about "things that have legs", i.e., as a
data modeler, where would you put the property "Number Of Legs":
The Guru points his index finger into the air and emphatically states: "The
great thing about using Interfaces to expose roles and group properties is
that any class that fulfills a role can expose that role to the universe with an
interface." Therefore, there is no gnashing of teeth "where will we
introduce "THINGS WITH LEGS" into the hierarchy?"
46
Boring Author's note: YES, a whale has vestigial legs, which means they are
not visible (and not particularly useful). Probably since he doesn't have to
walk to the local Quick Sack for a beer - ain't life strange? If you're a data
modeler, but not a "domain expert" on whales, you might model it wrong for a
couple of reasons, e.g., is it a mammal or fish?; does it have legs or fins?
Also, we suspect that probably all mammals have legs, since they're
vertebrates, but the data modeler is not always a certified expert on
vertebrates, mammals, valves, pumps or electric wires.
Some facts about a DOG may not always be true. For example, every WOLF
is a HUNTER, but is every DOG a HUNTER? Think about the tea-kettle
poodle, down the street, and you'll realize that at 2 pounds, he won't be
bringing down a 2,000 pound Caribou, anytime soon. He is an instance of
DOG that does not inherit all the properties of WOLF. If DOG Implies
WOLF, and WOLF Implies HUNTER, we should make that Implies "Optional",
since some members of the class DOG do not fulfill the role of HUNTER (at
least little Fluffy can dream).
47
13. The Realizes Relationship
The Realizes Relationship
The Guru says: "A ClassDef Realizes InterfaceDefs which Expose
PropertyDefs, which are ScopedBy Property Types." What he means is: an
object that is defined by a ClassDef expose its "roles" ("yields them up to
the universe") via InterfaceDefs - after all, that's where "role" information
is carried.
Do you see how we said that the German Shepherd, which is an instance of a
"DOG" class, realized something about itself, and then it yielded up those
ideas to the universe by Realizing InterfaceDefs? That goes back to
Powerful Idea #1. (with a dog, realizing something about himself is
possible, but a "pump" or a "valve" realizing something about themselves?
Believe me, we're data modelers: it's easy to think abstract thoughts, OK?).
48
role is. That role is exposed via the "Primary Interface". A couple of
examples are in order:
- The Primary Interface for a dog is DOG, i.e., the role that exposes
"dog-ness", and is the essential definition of each dog in the universe.
Any 2-year-old would understand that you're talking about a dog if
you yield up the Primary Interface "DOG".
- The Primary Interface for a bicycle is BICYCLE, i.e., the role that
exposes "bicycle-ness", and is the essential definition of each bicycle
that you could ever encounter
- The Primary Interface for a valve is VALVE, i.e., the role that
exposes the "valve-ness" of every valve in the universe.
Now, let's refine and qualify that idea a little bit for SmartPlant schema
users (because you're special). First, by convention, SmartPlant schema
Interfaces start with the letter "I", and next, Primary Interface definitions
for concrete objects generally end in "...Occ", which means "the occurrence
of an object." For example, the Primary Interface definition for
"PIDInstrument" is "IInstrumentOcc". For more information about
occurrences, see this. So, really, in the SmartPlant schema, the list looks
like this:
The most relevant purpose for the Primary Interface is to define the full
and complete "role-ness" of an object. It defines what an object "is" and
everything that is know about it.
The Guru sternly warns: "A ClassDef MUST Realize the Primary Interface.
In addition, it MAY Realize any other Interfaces that are either directly or
indirectly Implied by the Primary Interface." Otherwise, the Schema Police
will write you a ticket!
49
14. Defining a Relationship (RelDef, Rel)
The Relationship Definition (RelDef)
See if you remember: One of the underlying purposes of an object exposing
a role to the universe is so that someone else can form a relationship with it.
Now that you have seen some basic symbols, look at this:
Let's say it a different way: We model how one role is related to another
role by a "relationship definition" a.k.a. RelDef.
- In the data model, any object in the universe that fulfills the role of
Man can expose that role to the universe via an interface. If you
50
think that you fulfill the role of Man, then you can state "I realize
that I am a Man, therefore the class (that I am an instance of) in the
model should Realize the Man interface."
- In the data model, any object in the universe that fulfills the role of
Woman can expose that role to the universe via an interface. If you
think that you fulfill the role of Woman, then you can state "I realize
that I am a Woman, therefore the class (that I am an instance of) in
the model should Realize the Woman interface."
If you Realize the Man interface, you may look out amongst all the objects in
the universe that Realize the Woman interface and form a relationship with
that object. That relationship is called Marriage. I don't want to hear
complaints about how the data model "objectifies women", because it
absolutely does! ...and men, too! ...and valves, too!
- "A man"
o (thinking) "A man" is a member of the set of "Man"
(thinking) The set of "Man" that we're thinking about, is
referring to objects that Realize that they are a Man.
• (thinking) Since objects are defined in the
SmartPlant schema using ClassDefs, we're talking
about a ClassDef that Realizes InterfaceDef Man
o (thinking) Therefore, an object identified as
Doug, since it is an instance of a class that
Realizes the Man interface, can participate
in the Marriage relationship.
- Can form an association with "a woman"
o (thinking) "A woman" is a member of the set of "Woman"
(thinking) The set of "Woman" that we're thinking about,
is referring to objects that Realize that they are a
Woman.
• (thinking) Since objects are defined in the
SmartPlant schema using ClassDefs, we're talking
51
about a ClassDef that Realizes InterfaceDef
Woman
o (thinking) Therefore, an object identified as
Diane, since it is an instance of a class that
Realizes the Woman interface, can
participate in the Marriage relationship.
- And that relationship is called Marriage.
o Which means that an instance of a relationship definition
(RelDef) is going to be published, (i.e., a Rel)
And the Rel will have a unique id (UID)
And one end of the Rel contains the ID of Doug
And the other end contains the ID of Diane
(as if you needed further proof that the mind of a data modeling Guru is a
pretty strange thing). Please note that there may be legal or cultural rules
about forming that particular relationship that need to be modeled, and they
are called "semantics, rules, ontology, etc." We'll give you a breather for
now, but this is an important subject, and there is more discussion on this
topic coming up - but wait!, I think I hear wedding bells in the distance.
Let's see what other properties are on a RelDef - look way below, at Figure
59. What do you see?
52
- etc.
You're probably asking yourself: why do we need a RelDef at all? The Guru's
characteristically simple answer is "Instances of RelDefs become Rels." But
I'm betting that you won't let me get away with that. In order for two
objects to form relationships with each other, they need some kind of
"contract" that explains how they can do that. That's so that the
"retrieving" software knows what the "publishing" software is capable of
doing. It's almost a miniature pre-nuptial agreement.
Also, realize that abstraction can get out of hand. John's Mustang has
weight, so does his motorcycle, and his boat. But nobody cares about the
aggregate weight of all his vehicles, or, more to the point, nobody cares
about the aggregate weight of everybody's vehicles!
53
Introduction to Delete Propagation Semantics
There can also be some actions that happen if an object is deleted on either
side of a relationship, e.g., the owner sells a car - what happens?
We've been serious for too long. It's time to lift up our spirits and discover
how Relationship Definitions (RelDefs) and Relationships (Rels) work with
"real-world" objects.
54
Invitation to a Wedding (Example of a Rel)
If Doug, an instance of a "man", and Diane, an instance of a "woman", want to
get married in the SmartPlant Foundation Chapel of Love, we would first
model the "Marriage" relationship between them as a RelDef "Marriage"
(while the organ plays the Wedding March from Lohengren). That Marriage
RelDef allows ANY "Man" and ANY "Woman" to participate in that
relationship.
Introduction to Cardinality
Not to get too far away from the "marriage" as a "RelDef" idea, we could
talk about the "cardinality" of the relationship, i.e., y'all expect that both
Doug and Diane are married to exactly 1 person at a time. However, in the
context of the real-world, we know that the love-birds can both be divorced
and re-married "zero or more" times, to many other people over their
lifetimes. That means that the data modeler needs to use a cardinality of
zero or more (0..*), a.k.a., "many" on each end of the RelDef. Do you see
what "cardinality" represents - a count. So, if Doug and Diane can be
married to more than one person in their lifetime (under any circumstance),
then the roles on each end of the RelDef should include a cardinality of
"many." The cardinality does not say "when" they can be married (that's
usually a cultural restriction), just that they can be married to more than
one person during their lifetime.
In the properties listed above, you can see that the definition of a
relationship is a very complex topic. The "contract" between InterfaceDefs
55
has to state a lot of stuff, like roles (I am a Man, vs. I am a Car owner) and
cardinalities (there must be exactly 1 of me). If two InterfaceDefs could
just join hands and form a relationship, it would be very difficult for the
retrieving software to know if any rules had been broken, e.g., if the
cardinality (the count) on one end of a relationship is from 0 to 3, how can
the retrieving program know that the data that it is retrieving is OK? The
RelDef simply describes the "contract" and can say the cardinality is such-
and-such, and the retrieving application can just count on it being right.
- First, pick the right level of abstraction, i.e., from very concrete to
very abstract. Look at the "Implies hierarchy" to see what
relationships you can form.
- Next, you should not use an "abstract" RelDef to create a Rel in the
document that you publish (not strictly enforced).
- Last, is "cardinality" an issue? Is there a RelDef that has the right
cardinality on both ends?
Locality of Reference
For the true RelDef aficionados (I know that a few of you are out there),
there is a little-known property of a RelDef called "locality of reference".
Skip this junk (he's off the deep-end). Here is a model of a RelDef:
56
See the little bitty minus-signs in front of the two roles? They represent
the locality of reference for each role. Thinking that an instance of a
RelDef is a relationship, let's visualize a relationship between a vessel and a
nozzle on that vessel, i.e., a vessel is a type of equipment, and a nozzle is a
type of equipment component.
And to make it more interesting, what about the other tools that think that
vessels and nozzles are shared objects? The "they", below, refers to
"another tool":
Sorry Charlie, the Guru doesn't know the answers to any of those questions.
Therefore, he recommends that you use the locality of reference property
on each role to control whether the object at this end of the relationship:
57
adapter) that may contain vessels, and may contain nozzles. For each nozzle
that is related to the vessel, there will be a relationship between the vessel
and the nozzle (V101 <--> N1). As you create that relationship, surprise! you
find that you don't know a thing about, e.g., the nozzles! For some perfectly
valid reason, you are only in charge of creating vessels, not nozzles. Should
you publish the vessel, if you already know that you don't know about its
associated nozzles? Well, maybe! Same scenario for the tool that publishes
nozzles, but hasn't got a clue about vessels - can he publish a relationship
with one end being "this nozzle", and the other end being "I dunno"? Maybe!
Are you a little surprised? Thinking about shared objects for a minute, you
realize that "some other tool may be able to publish the data that is
associated with my data, at an earlier or later time, and that's OK." I know
nozzles, and Bo knows vessels. That's fine. But when I publish the "nozzle",
I'm counting on Bo to supply the UID of the vessel, so that we can complete
the relationship between us (vessel <--> nozzle). What gets published is
validated against the locality of reference property.
You ask the Guru: "Is it OK for me to publish a 'dangling relationship'"?
Surprisingly, he says: "Yes, because, based on the value of the locality of
reference property, we expect Bo to publish the rest of the data tomorrow,
using his tool."
58
15. Unique Identifiers (UIDs)
In the SmartPlant world, every object must have a unique ID (UID). A UID
is a necessary property of each object in order to keep the database in a
consistent state. Since the SmartPlant schema is built on top of SPF, UIDs
must be unique within the context of SPF. You can skip the technical ideas
about UIDs.
59
16. Edges, Graphs, Views & Class View Map
(EdgeDef, GraphDef, ViewDef, ClassViewMap)
The SmartPlant schema has structures that make it easier for the tools to
view things more like "their" world. Remember that each software tool has
its own idea of how objects are hooked up.
The ability to navigate from one object in the model to another object in the
model can be determined by Edge definitions (EdgeDef). This allows you to
specify which interface to start the navigation, and which direction to
travel, in order to see information associated with a different interface.
Once these navigation "edges" have been defined, they can be grouped
together to form a Graph definition (DirectedGraphDef). These are a
connected network of edge definitions.
60
user to go directly from Object A to Object B in the tree view, an edge
definition can be created to allow the user to traverse through multiple
intermediate objects and display an object at the end of the relationship
that meets the specified criteria. For example:
61
Figure 20 Vessel with Nozzles (Conceptual)
So, let's cook up a couple of useful EdgeDefs that might make life easier for
reporting:
62
- For Pipe run "XYZ-123", show me the vessels along the pipe run that
have a "Drain" nozzle
o Pipe run -> nozzle -> vessel -> nozzle="Drain"
- For Pipe run PR-101, go through the vessel and tell me the name of the
Pipe run that exits the vessel as a "Drain"
o Pipe run("PR-101") -> nozzle -> vessel -> nozzle="Drain" -> Pipe
run
- Show me the Valve that controls the output of nozzle #2?
o Nozzle(#2) -> Valve
63
- It starts at "IProcessDataComposition"
- and travels across RelDef "ProcessDataCaseComposition"
- It will succeed if the PropComparisons property =
"IProcessDataCase~ProcessCase~=~Nor"
o That means "if the "ProcessCase" property on the object
contains the string "Nor" - bingo! you'll see it on your report
(well, you still have to write the report software).
64
the data are useful to viewers familiar with the underlying schema, other
users will need more user-oriented views of the data for it to be meaningful.
Figure 25 ViewDef
65
Class View Maps (ClassViewMap)
Class view maps (ClassViewMap) is a collection of ClassDefs and ViewDefs
that have related user groups in SPF. Since they are only used by SPF, they
will not be covered in detail here, but there is documentation available. It
should be sufficient to say that the ClassViewMap is important for shared
class definitions because it allows you to use the same view definition for
multiple class definitions, including those objects that are shared across
tools. By using the same view definition for multiple class definitions, users
see the same presentation of information whether they are looking at the
originally-published class, or a class from another tool for the shared object.
66
17. UML Concepts (Elaboration)
The most important concept of the SmartPlant schema is that it is based on
exposing "roles", implemented via "interfaces" to the outside world. This
concept is called "role-based modeling." By way of example, a discussion is
provided that re-states everything that we already said - I just want to be
sure that you "get it." The Guru declares: "Resistance is futile."
A class can offer up many "roles" to the world. For example, a “Man” can be
a “Father”, a “Husband”, an “Uncle”, a “Steelworker”, a “Taxpayer”, a
“Driver” etc. None of the roles that the “Man” plays with the universe are
necessarily “mutually exclusive”. When the IRS wants to interact with the
“Man”, it doesn’t care that he is an “Uncle” or a “Driver”, it cares that he
exposes a “Taxpayer” role that they can interact with. The “Taxpayer” role
probably has a unique id (Taxpayer number) that the IRS uses, along with
other properties that are relevant to the “Taxpayer” role. Obviously, the
class “Man” can play many roles with the universe.
The Guru affirms: "A class "exposes", or “yields up”, or “realizes” its roles
through abstract entities called “interfaces”.
By convention, interface names are preceded by the letter “I”. For example,
the “Taxpayer” role is exposed to the universe by the “ITaxpayer”
interface. “ITaxpayer” would probably contain the Man’s taxpayer id. The
67
“ISteelworker” interface would contain his Union affiliation; the “IDriver”
interface would contain his driver license number, etc.
The Guru allows: "It should be clear that a "Person" can't be both a "Father"
and a "Mother", so modeling the class with both of those properties is
incorrect, because it is ambiguous. The situation may be prevented just by
modeling the classes correctly."
68
An interface is defined by an InterfaceDef.
Interface Polymorphism
(WARNING: Skip this unless you are a real hard-core geek)
Which means that a client can make early-bound calls to the properties (and,
within SPF, methods) of the interface without having to know the class of
the object it's using.
69
The Guru makes known: "The concept of abstracting classes and correctly
figuring out which roles get which properties (maintaining orthogonal roles) is the
heart of creating a correct data model. Before adding new objects to the
SmartPlant schema, please be very sure that you clearly understand role-based
modeling."
70
18. Examples of Class and Interface Models
Since interfaces are "abstract", they can be exposed by (“realized by”) any class.
For example, the class “Woman” can also realize most of the interfaces that
“Man” exposes, with the exceptions of “IHusband” and “IUncle”.
71
Figure 27 Class Diagram for WOMAN
72
As a data modeling concept, please note that the “Children” relationship
shown in Figure 28 may actually have its own properties. For example, the
date of birth or adoption, and possibly a termination date, too. That means
that it (the set of properties that come into existence as the result of a
mother having a son) is a first-class object, and, like “Son” and “Mother”
objects, gets a unique id (similar to Taxpayer id), etc. The properties that
come into existence as a result of a relationship being established are called
"link attributes."
Review of RelDef
A Relationship Definition (RelDef) consists of two roles, plus two
cardinalities, plus an identity, etc. Obviously, the name should describe how
the roles play with each other. Examining Figure 28, the UML diagram
states:
• An instance of a class that realizes the interface "ISon", e.g., "a man
named Doug" may form a valid relationship with an instance of a class
that realizes the interface "IMother", e.g., "Sally", and that
relationship between them is called "Children", i.e., Doug is Sally's
child and Sally is Doug's mother.
• A "Son" and a "Mother" may have many different kinds of
relationships besides "Children", however with respect to the
"Children" relationship, the role that "ISon" plays with "IMother" is
named "Sons", while the role that the "IMother" plays with "ISon" is
named "Mother"
• With respect to the maximum cardinalities in the diagram:
o An instance of a "Son" may form a valid relationship with one
instance of "Mother". Read the cardinality on the side
"opposite" side of "Children" to figure this out.
o An instance of a "Mother" may form a valid relationship with
many instances of "Son". Read the cardinality on the side
"opposite" side of "Children" to figure this out..
• With respect to the minimum cardinalities in the diagram:
o In this example, it is safe to model the minimum cardinality on
both sides as "0", but it could be argued (and it is shown) that
"1" should be the minimum for the “Mother” role, otherwise a
"Children" relationship does not exist (since there can’t be a
“Son” without a “Mother”, by definition, QED).
73
19. The SmartPlant "Meta Schema"
From the last chapter, you saw modeling elements like:
By now, you're thinking "this is all too confusing! How is a data modeler
supposed to keep track of all of these "things" that comprise the SmartPlant
data model"? Well, a good data modeler would model the model elements!!
The description of how all the model elements interact with each other is
contained in a "model of the model", also called a "meta schema."
The Guru conveys: "The meta schema is a set of schema objects that
describe the objects in the SmartPlant schema. It defines the language in
which the SmartPlant schema is written."
For example, all classes in the schema are instances of the ClassDef class in
the meta schema. Similarly, all relationship definitions in the schema are of
class RelDef, which is part of the meta schema.
74
So, dear reader, welcome to my world: the meta schema also describes
itself! All classes in the meta schema are also of the class ClassDef, which
is defined as part of the meta schema.
These are the "Rules of the Road" for a ClassDef. The schema component
actually enforces those rules. If you use the SmartPlant Schema Editor, it
won't let you mess up a ClassDef, because it knows what one "behaves" like.
Informal Rules
Besides the formal rules, there are informal rules, such as how a ClassDef is
named, etc. Many of these rules are considered "best practices." No great
harm will result if you name an InterfaceDef "TESTING123", but it will
confuse someone later on, who is used to the idea that InterfaceDef names
begin with the letter "I".
Another informal rule is: don't add things to a "closed" enumerated list. You
might be able to, but you should not. That's because the schema file and
the data files will not be "backwards compatible." Think about this case:
someone adds "PINK" to the enumerated list of {YES;NO}. What does the
retrieving software do to handle that? I don't know either.
75
The SmartPlant Schema Editor
It is time to introduce (drum-roll, please) the SmartPlant Schema Editor. It
is a software tool that keeps track of the internal (meta-) structures, and
lets a knowledgeable user create or change schema elements. If you're this
far into this document, it makes sense for you to download the latest copy
of the SmartPlant Schema Editor, and take a look at the meta schema. Just
open up the Editor and do a View/Metaschema/OK. On the left side of the
screen, you can hit the "+" right next to ClassDef, and you will start to see
some of the many internal structures that the editor deals with.
76
20. SmartPlant schema Files
The SmartPlant schema consists of data modeling elements (classes,
relationships, etc.) which are modeled in Unified Modeling Language (UML),
based on a meta schema (and its rules) and instantiated in an "XML" file,
called the SmartPlant schema file. The SmartPlant schema file may also
contain graphical elements (schema diagrams) that can be laid-out in visually
pleasing ways so that the data modeling elements are presented in an optimal
fashion.
The software tool that manipulates the schema file is called the SmartPlant
Schema Editor, and is available through normal Intergraph distribution
channels. The Editor uses Microsoft COM components (.dll files) that are
called SmartPlant schema Components.
77
Component Schemas (CompSchema)
The SmartPlant schema file contains all the class definitions (ClassDefs) for
all the participating tool users. Each ClassDef is associated to a "Component
Schema", which is a way of grouping classes that are used within a specified
domain or application area.
78
Figure 30 Classes That Are in the P&ID Component
79
A Shared Pipeline
Do you have a concept of a "Pipeline"? So does SPP&ID, and PDS and SP3D.
Let's see how they use the idea of sharing so that they are all talking about
the "same" Pipeline.
80
the shared roles can be modified by any of the tools that publish those
classes.
That is way simpler than it sounds. All of the ClassDefs for, e.g., the SP3D
tool are bound together to a parent object called "P3DComponent.". When
SP3D "publishes" a document, it can only publish objects that are defined by
ClassDefs that are contained in the "P3DComponent" group. Which means
that the schema for a tool can be much smaller than the entire SmartPlant
schema (which is really pretty big).
81
- The property definitions (PropertyDef) that are Exposed by those
interface definitions
- The property types that are ScopedBy those property definitions
The component schemas are full of examples of shared objects that appear
in more than one component schema. Virtually all of the schema data
defined in a component schema may be shared by one or more other
component schemas.
82
21. XML Files Overview
XML, or Extensible Markup Language, is an International Standard, or
specification, that is used for storing structured data in an easy,
transparent manner. Traditional databases were stored in some kind of
proprietary, binary format that was highly optimized by the particular
database vendor. That made it very hard to translate it to another format
(which is what the database vendors wanted), and makes it impossible to
view the underlying data in any meaningful way, without the vendor-supplied
GUI and other tools.
83
NOTE: it is perfectly valid to create an XML file that does not have a
schema, or even a data dictionary. And, because of the structured nature of
XML files, the retrieving application "can" deduce some meaning from a
completely naked XML file that is keyed-into the simplest text input
program on the planet.
The Guru divulges: "The point where the SmartPlant schema and XML
intersect is a "contract", and is agreed to, and widely publicized, and is,
therefore a "standard" way of dealing with conforming documents."
Retrievers can count on it to be stable. Publishers can count on it to be
stable. New tools "know" how to share ideas about pumps, valves, and
gasoline. Just publishing an XML file that contains the word "pump" is really
not enough to get the job done. A schema makes sure that the XML
structure is "standard".
Of course you should understand by now that besides the documents that
get published and retrieved, the SmartPlant schema itself is also an XML
file! When we find a powerful idea like XML, we try to use it as much as
possible.
84
22. Patterns
Let's start by looking at simple patterns in the SmartPlant schema, and then
work our way towards the real richness of the SmartPlant data model.
85
With respect to a software tool "publishing" some data into SPF: publishing a
class would cause an object to be output to the document, and publishing a
relationship also causes an object to be output (see sample XML file).
To show what is actually published, a sample XML file that the SmartPlant
P&ID application would produce for the vessel/nozzle/pipe run example is
provided.
An Object Diagram
The Object Diagram shown in Figure 33, below, is the transformation of the
internal SmartPlant P&ID data model into a format that conforms with the
SmartPlant schema. From the Object Diagram, a total of seven objects will
be published: four class objects and three relationships.
86
Figure 33 An Object Diagram of Vessel/Nozzle/Pipe run
The blocks on the Object Diagram are the class objects, the "lollipops" are
the interfaces, and the solid lines are the relationships. Not all interfaces
are shown for the class objects. Notice that the nozzle does not directly
connect to the pipe run, instead, a new object "PipingPort" is created, since
that is what connects to a pipe run in the SmartPlant schema, as shown
below.
The interfaces and relationships are depicted in the SmartPlant schema. The
relationship type, both role and cardinality, is defined. When examining the
87
SmartPlant schema, it is important to note that classes are not shown. The
reader must have sufficient familiarity to infer that the Vessel Class will
realize the "IProcessVessel" interface.
<EQDProcessVessel>
<IObject UID=”123” Name=”V-101”/>
<IProcessVesselOcc .../>
<IProcessVessel VolumeRating=”250”…/>
<IEquipmentOcc … />
<IEquipment ... />
</EQDProcessVessel>
<EQDNozzle>
<IObject UID=”234” Name=”N1”/>
<INozzleOcc .../>
<INozzle NozzleType="??" />
<IEquipmentComponentOcc … />
<IEquipmentComponent .../>
</EQDNozzle>
<EQDPipingConnector>
<IUID UID=”678” Name=””/>
<IPipingConnector …/>
<IConnector EstimatedLength="15.0 ft" .../>
</EQDPipingConnector >
<EQDPipingPort>
<IUID UID=”345”/>
</EQDPipingPort>
<Rel>
<IUID UID=”Relationship_123_234”/>
<IRel UID1=”123” UID2=”234” DefUID=”EquipmentPartComposition”
</Rel>
<Rel>
<IUID UID=”Relationship_234_456”/>
<IRel UID1=”234” UID2=”456” DefUID=”PipingPortComposition”
</Rel>
<Rel>
<IUID UID=”Relationship_234_678”/>
<IRel UID1=”234” UID2=”678” DefUID=”PipingEnd1Conn”
</Rel>
The simplified "sample" from the SmartPlant schema contains all the
information needed to capture graphical objects, relationships between the
objects, the hierarchy, and the data (properties) associated with those
objects.
88
"Part" vs. "Occurrence"
One important pattern is how a "part" is different from an "occurrence", and
it is not a simple one. It comes from the underlying architectural model, and
it will take a little while to understand. See Figure 65 for a basic idea of
how the UML should look.
"Occurrence"
If a P&ID diagram shows valve "V-101" in a pipeline, it is there for a reason:
the designer has fulfilled a "design intent to control fluid-flow with the
valve identified as "V-101". (NOTE: you will learn more about the concept of
design intent, called "facility model", in a later chapter).
The Guru points out: "An occurrence of an item almost always shows up on a
P&ID diagram as a 'tagged item', gets purchased, and then, installed
somewhere, e.g., in a process plant."
"Part"
Think about some valves. You're probably visualizing:
- Valve
o Linear Valves
Globe valve
• Globe valve, reduced port
• Globe valve, rotary
o Hose valve
o 3-way valve
o Control valve
o etc.
In general, there are some "valve-type-ness ideas that come to mind about
all valves, meaning: "within the class 'valve', what type of valve is it"?
Earlier, we talked about classification of objects, and how it deals with
89
breaking down big classifications into smaller and smaller groups of similar
things.
The class "Animals" contains the classes {Mammals; Reptiles}, each of which
contains closely-related classes, etc. Can you see why we call it a "class type
hierarchy"?
Why It's Called 'Part'
Common properties about type-ness are grouped together and yield up a
"part" role to the universe (via the "IPart" interface). So why did the
committee of very bright thinkers call it "part" instead of "type hierarchy"?
It is an especially relevant question since many folks think of "part" as "an
engine has, i.e., 'is made up of', parts called pistons". But in the underlying
POSC Caesar model, (which was the basis for the SmartPlant schema), it is
called "part", meaning "catalog part". What they meant to convey was that a
catalog of, e.g., valves is typically broken down by "types".
Typical Material
Calling a "type hierarchy" a "part" turns out to be a bad move from another
point of view, viz., "catalog" items are called "typical material" in the POSC
Caesar model. We, more or less, think that "typical" means "type-ness".
90
That kind of ambiguity causes great confusion (at least among data
modelers), and I think that somebody should get spanked and go to bed
without dinner!
The Guru grunts: "For now, please memorize that 'Part' means 'type
hierarchy' and 'typical material' means 'catalog'."
Don't Need No Stinkin' Parts
There really doesn't need to be a "part" role for everything in your life, but
it may save you some design time, when you consider the number of valves
that are in a process plant, or animals in the animal kingdom.
Think of this: In the document that SmartPlant P&ID will publish, almost
certainly, there's going to be "an occurrence of a valve", i.e., a "tagged" item,
and in addition there may be valves that are called parts, which describe
characteristics of valves, in general, but do not show up on the P&ID
diagram. There can also be valves in a catalog (typical valves), and even
valves that have a serial number (actual valves).
Modeling "Part" vs. "Occurrence"
Thinking of a "valve-as-a-part", what are common characteristics that
describe "valve-part-ness", e.g., inlet size, outlet size, inlet/outlet offset,
weight, height, type, etc. And thinking of a "valve-as-an-occurrence", what
are common characteristics that describe the "valve-occurrence-ness"?
Well, for example: mounting angle, height above ground, etc. Understand
this: a "valve-as-a-part" can't possibly know how an occurrence of a valve will
be mounted, so properties about "parts" and "occurrences" are different.
Now, let's look at a data model of "part" and "occurrence."
91
Figure 35 Pattern for "Part" and "Occurrence"
Looking at Figure 35: for sure we're going to realize the role of "an
occurrence of a valve" ("IReliefValveOcc"), since it will finally, really exist as
a "tagged" item on a P&ID drawing (otherwise, what are we doing?). There is
an optional <<Implies>> that says "maybe there are common characteristics
of all valves, that we'll find on the role "Valve". We also see that "mounting
angle" is only on the "occurrence" of a valve, since that property can't
possibly be a common property of a "valve-as-a-part" or a "typical" valve.
Similarly, "Installation instructions" are truly "occurrence" properties, since
we can't "install" the "valve-as-a-part", we can only install the "valve-as-an-
occurrence".
92
Now, why is "Weight" listed twice in the table above? Because even though
some catalog entry says that the valve weighs 300 pounds, this "occurrence"
of a valve might weigh 302 pounds. We may want to remember the original
"design" parameter of "300", and the "adjusted" value of 302 pounds. How
do we do that?
The problem of data ambiguity raises its ugly head! There are suddenly two
different meanings of "Weight":
- A second user came along and thought that "weight" meant "actual
weight"
- The first user did not specify that he meant "design" weight
- The data modeler didn't ask enough questions, e.g., he is not enough of
a "domain expert" to know that there are different meanings to the
word "weight"
How do we fix the problem? First, we call a meeting. No, really. We have to
sort out the "semantic meaning" of the ambiguous term. After the meeting,
we may find that there are other meanings to "weight":
- actual weight
- water weight
- test weight
- fluid-filled weight
And now, the data modeler can take one of several actions:
93
- Publish the agreed meaning of "weight"
- Publish the new "weight" attributes and their new meanings.
What about the data that the customer was publishing that may be
incorrect? For that, we have schema evolution rules, and data
transformation.
Actual Material
You'll also need to understand that the "actual" valve, i.e., the one with S/N
CV-123-OHN-24B, can have a weight that is different from weight of the
valve-as-part, and different from weight of the valve-as-occurrence. In
order to understand the different phases in the life of a valve, and gain a
better insight into what "Planned material", and "Actual material" are, be
sure to read the exciting Chapter 23.
Let's try to understand why the data modeler decides to expose properties
on something-as-a-part vs. something-as-an-occurrence. That should help
settle down the part of your brain, that is still wondering "what is a part,
and what is an occurrence?"
Part Roles & Properties
Look at Figure 36, below. It shows properties that are on an "equipment-as-
a-part", viz., "IEquipment".
94
Implied Part Roles
Because of 5NF data normalization, some of the properties are exposed by
other roles, which are implied by "IEquipment". Look at the first table in
Appendix I; you can see that there are an additional 10 roles that an
"equipment-as-a-part" yields up to the universe (along with all those
properties):
Role
Catalog
Electrical
Equipment
Identification
Insulation & Tracing
Material Management
MRO
Process & Environmental
Conditions
Safety
Surface Treatment & Coatings
Weight & COG
Why is there only 1 property, and why is it "that" property? Good question!
Thinking about what roles "an occurrence of a piece of equipment" might
yield up to the universe: we're thinking of a horizontal tank here, help me
out a little, it might be "sloped" so that liquid would always run out of one
end and not stay inside and corrode the tank. Could we put the role of being
a "sloped item" on "equipment-as-a-part"? Nope - "sloped-ness" is not about
"type-ness", nor "identification", hey, look up at the table of Role's just
above. Is "sloped items" somehow in that list? Can you see why not? The
answer is "because sloping items (items that have a measurable slope) can
only occur at the item level, not at the item-definition level." The equipment
"occurrence" is an item (a tagged item), not the definition of an item (which
95
is a "part"); therefore "IEquipmentOcc" can realize that it is "sloped", but
"IEquipment" can not.
Implied Occurrence Roles
Because of 5NF data normalization, some of the properties are exposed by
other roles, which are implied by "IEquipmentOcc". Look at the second table
in Appendix I. You can see that there are an additional 8 roles that an
"equipment-as-an-occurrence" yields up to the universe (along with all those
properties):
Role
Dimensional & Geometrical
Equipment
Identification
Manufacturing, Fabrication,
Construction
Miscellaneous
Process & Environmental Conditions
Startup Treatment
State & Status
Testing
96
RelDef Patterns
There are two common relationship patterns that you will encounter in the
SmartPlant schema, viz., composition and collection.
Composition relationships
Composition relationships are used to model very strong ideas about how
parents and children are related. More specifically, a composition describes
what happens to the child, if the parent is deleted. In a composition
relationship, we would say "if the parent is deleted, the children are
deleted." Let's make that clear with an example: If you have a process
vessel with several nozzles on it, what happens if the designer deletes the
vessel from the P&ID? Right - the nozzles can't be left hanging in space, so
they are deleted (by delete propagation rules). Now, this brings up a REAL
BIG PROBLEM. Let's say that vessel V-101 on the P&ID just got deleted,
but vessel V-101 and its nozzles are modeled on a SP3D drawing (remember
"shared objects"?). What the heck happens now? Can one tool delete
something, and make it go away from another tool?
The Guru laughs: "But of course!" That's part of what makes SPF a complete
solution to collaborative engineering. I don't want to give away all the
secrets of "delete propagation" here, but suffice it to say that when the
vessel was deleted from the P&ID, it published a document that contained a
special structure called a "tombstone" for the vessel and its nozzles. Tools
like SP3D are able to retrieve that document and act on the fact that
another tool is giving them a "to-do action", e.g., "delete the vessel and its
nozzles."
Collection relationships
Collection relationships are not quite as strong as composition relationships.
They allow for the case that children can exist after their parent has been
terminated. Let's see if you understand this example: I'm imagining a cup
full of pens. If the cup goes away (the thing that is collecting the pens in
one spot), do the pens go away? Nope. Therefore, there are no "delete
propagation" rules on collections.
97
Plant Breakdown Structure
The Plant Breakdown Structure (PBS) is a hierarchy of, e.g., the real,
physical things that are required to build, e.g., a process plant. The default
PBS is a hierarchy of Plant, Functional Area, Functional Unit. Not everyone
agrees on that particular hierarchy, so it can be "customized" by the
development team during SPF installation process. Actually, the PBS
hierarchy is created by SPF and published by it, and finally, retrieved by the
various tools in a PBS Document.
WBS hierarchy is created by SPF and published by it, and finally, retrieved
by the various tools in a WBS Document. Actually there are several WBS
documents published by SPF:
Naming Conventions
The following naming conventions are used in the schema:
- Interface definitions are prefixed with “I”. For example, "IPump" is
an interface definition that expresses the role of a “pump”.
- Many class definitions are prefixed with information about the
component schema that they are associated with. For example,
98
"EQDStrainer" has a Componentization relationship with the
EquipDataSheet component schema.
- Properties may be prefixed with the name of the interface definition
that exposes them. For example, Instrument_FluidType is exposed by
"IInstrument". This is called denormalization of an attribute.
- Relationship definitions are named according to their pattern, such as
collection or composition. For example, "PBSItemCollection" is a
collection, and "PipingPortComposition" is a composition.
- Primary interface definitions for concrete objects generally end in
"Occ," which is the “occurrence of an object”. For example, the
primary interface definition for "PIDInstrument" is
"IInstrumentOcc". For more information about occurrences, follow
this link.
99
23. SmartPlant Architectural Model
The Underlying "Architectural Model"
In the beginning (of the SmartPlant schema), it was decided that the data
model should be able to serve as an overall model, e.g., for a process plant,
from the conceptual phase through construction, handover, operation, and
finally to the decommissioning and dismantlement phase. For that reason,
the SmartPlant schema is based on some concepts from POSC Caesar. In
fact, here is what they have to say:
The "facility model" evolves into things that get purchased (or fabricated),
called a "material model". Let's say we look at the output of the simulator
and see that we need to increase the fluid pressure between one vessel and
another. That means that we need a facility to do that pressure increase.
One possible way to increase pressure in a fluid line is to use a pump, so the
facility might evolve into a pump. However, another way to increase
pressure in a fluid line is by gravity, so the facility might evolve into a height
requirement for one vessel vs. another. The "facility" isn't really something
100
that you can put your hand on; it just evolves into something that fulfills its
requirements.
We also can remember all of these relationships and properties for the next
time that we're building a similar plant.
101
24. Schema "Evolution"
The SmartPlant schema is not complete. In fact it may never be complete,
because defining all the things that can be defined with it is a mighty large
set of things. There are some things that you can do to extend the schema,
and some things that you must not do.
102
25. Schema Reading Practice
I say: It's easy to read UML diagrams because they are very precise, and
there are only a few symbols used. The Guru blurts out: "Easy to Do is Easy
to Say". So with that in mind, let's spend a few minutes reading some UML
diagrams so that he quiets down a little bit.
It is a "Shared object" (meaning that other tools can publish their idea of a
fan and it will be merged into this idea of a fan within SPF) in the "Planned
material" model (meaning that we plan to purchase a fan).
103
It Realizes 46 roles:
Category Interface
Behavior IDifferentialTemperatureItem
Behavior IRotatingItem
Catalog IPart
Dimensional & Geometrical IOrientedItem
Equipment IEquipment
Equipment IEquipmentOcc
Equipment IFan
Equipment IFanOcc
Equipment IFluidTransferMachine
Equipment IFluidTransferMachineOcc
Equipment IGasTransferMachine
Equipment IGasTransferMachineOcc
Equipment IMaterialTransferEquipment
Equipment IMaterialTransferEquipmentOcc
Equipment IMechanicalEquipment
Equipment IProcessEquipment
Equipment IProcessEquipmentOcc
Identification INamedEquipment
Identification IObject
Identification IPBSItem
Identification IPBSItemCollection
Insulation & Tracing IInsulatedItem
Manufacturing, Fabrication, Construction IInstalledItem
Manufacturing, Fabrication, Construction IManufacturedItem
Manufacturing, Fabrication, Construction IRequisitionedItem
Manufacturing, Fabrication, Construction ISuppliedItem
Material Management IPlannedMatl
Material Management ISpecifiedMatlItem
Miscellaneous IDesignedItem
Miscellaneous INonDrawingItem
Miscellaneous IPartOcc
Process & Environmental Conditions IAltDgnPoint
Process & Environmental Conditions IDesignPoint
Process & Environmental Conditions IFacilityPoint
Process & Environmental Conditions INormalDgnPoint
Process & Environmental Conditions IPressureDropItem
Process & Environmental Conditions IPressureRatedObject
Process & Environmental Conditions IProcessDataCaseComposition
Process & Environmental Conditions IProcessPointCollection
Process & Environmental Conditions IProcessWettedItem
Startup Treatment ICleanedItem
Surface Treatment & Coatings ICoatedItem
Testing ITestedItem
104
Category Interface
Weight & COG ICOGItem
Weight & COG ISolidItem
Weight & COG IWeightItem
Those roles expose 209 properties, which are scoped by 73 types, which
include 22 different unit of measure lists, and 46 enumerated lists:
Property Type
AltDesignPressMax PressureUoM
AltDesignPressMin PressureUoM
AltDesignTempMax TemperatureUoM
AltDesignTempMin TemperatureUoM
AngularVelocity AngularVelocityUoM
AsynchronousSpeed AngularVelocityUoM
AvgInsulDens DensityUoM
CatalogName string
CatalogPartNumber string
CleaningResponsibility CleaningResponsibilities
CleaningRqmt CleaningRqmts
CoatingColor CoatingColors
CoatingRequirement CoatingReq1
CoatingType CoatingReq2
ConstructionStatus ConstructionStati
ConstructionStatus2 ConstructStati2
CorrosionAllowance LengthUoM
Description string
Design_FluidState FluidPhases
Design_MassFlowRate MassFlowUoM
Design_MetalTemperature TemperatureUoM
Design_Pressure PressureUoM
Design_Pressure2 PressureUoM
Design_ShortTermDuration TimeUoM
Design_ShortTermPressure PressureUoM
Design_ShortTermTemperature TemperatureUoM
Design_SpecificGravityMassBasis double
Design_SteamOutPressure PressureUoM
Design_SteamOutRequired boolean
Design_SteamOutTemperature TemperatureUoM
Design_Temperature TemperatureUoM
Design_Temperature2 TemperatureUoM
Design_VacuumPressure PressureUoM
Design_VacuumTemperature TemperatureUoM
Design_VaporPressure PressureUoM
Design_VentingTemperature TemperatureUoM
Design_Viscosity AbsoluteViscosityUoM
DesignApprovalRequired boolean
105
Property Type
DesignCriteriaFluidState FluidPhases
DesignCriteriaMassFlowRate MassFlowUoM
DesignCriteriaMetalTemperature TemperatureUoM
DesignCriteriaPower PowerUoM
DesignCriteriaPressure PressureUoM
DesignCriteriaPressure2 PressureUoM
DesignCriteriaShortTermDuration TimeUoM
DesignCriteriaShortTermPressure PressureUoM
DesignCriteriaShortTermTemperature TemperatureUoM
DesignCriteriaSpecificGravityMassBasis double
DesignCriteriaSpeed AngularVelocityUoM
DesignCriteriaSteamOutPressure PressureUoM
DesignCriteriaSteamOutRequirement boolean
DesignCriteriaSteamOutTemperature TemperatureUoM
DesignCriteriaTemperature TemperatureUoM
DesignCriteriaTemperature2 TemperatureUoM
DesignCriteriaVacuumPressure PressureUoM
DesignCriteriaVacuumTemperature TemperatureUoM
DesignCriteriaVapourPressure PressureUoM
DesignCriteriaVentingTemperature TemperatureUoM
DesignCriteriaViscosity AbsoluteViscosityUoM
DesignResponsibility DesignResponsibilities
DesignWeight MassUoM
DifferentialTemperature DiffTempUoM
Dry_Installed_Weight MassUoM
Dry_Stripped_Weight MassUoM
ElectricalEquipmentDesignType ElectricEquipmentDesignTypes
EqType0 EqTypes0
EqType1 EqTypes1
EqType2 EqTypes2
EqType3 EqTypes3
EqType4 EqTypes4
EqType5 EqTypes5
EqType6 EqTypes6
EqTypeDescription string
EquipmentTrimSpec string
EquipPrefix string
EquipSeqNo string
EquipSuff string
ExteriorSurfaceTreatment ExteriorSurfaceTreatments
FluidServiceCategory FluidServiceCategories
FluidServiceCategory2 FluidServiceCategories2
FluidTransferMachine_Capacity VolumetricFlowUoM
FluidTransferMachine_DifferentialPressure DiffPressUoM
FluidTransferMachine_RatedPower PowerUoM
FrictionalPressureDrop DiffPressUoM
106
Property Type
Global_Design_CoG_X LengthUoM
Global_Design_CoG_Y LengthUoM
Global_Design_CoG_Z LengthUoM
Global_Dry_Installed_CoG_X LengthUoM
Global_Dry_Installed_CoG_Y LengthUoM
Global_Dry_Installed_CoG_Z LengthUoM
Global_Dry_Stripped_CoG_X LengthUoM
Global_Dry_Stripped_CoG_Y LengthUoM
Global_Dry_Stripped_CoG_Z LengthUoM
Global_Test_CoG_X LengthUoM
Global_Test_CoG_Y LengthUoM
Global_Test_CoG_Z LengthUoM
Global_Wet_Operating_CoG_X LengthUoM
Global_Wet_Operating_CoG_Y LengthUoM
Global_Wet_Operating_CoG_Z LengthUoM
HeightRelativeToGrade LengthUoM
HyperlinkToVendor string
InstallationResponsibility InstallationResponsibilities
InsulatedItem_OperatingTemperature TemperatureUoM
InsulationSurfaceArea AreaUoM
InsulationWeight MassUoM
InsulCompositeMatl InsulCompositeMaterials
InsulPurpose1 InsulPurposes1
InsulPurpose2 InsulPurposes2
InsulPurpose3 InsulPurposes3
InsulSpec string
InsulTemp TemperatureUoM
InsulThickSrc InsulThickSrcs
InteriorSurfaceTreatment InteriorSurfaceTreatments
Local_Design_CoG_X LengthUoM
Local_Design_CoG_Y LengthUoM
Local_Design_CoG_Z LengthUoM
Local_Dry_Installed_CoG_X LengthUoM
Local_Dry_Installed_CoG_Y LengthUoM
Local_Dry_Installed_CoG_Z LengthUoM
Local_Dry_Stripped_CoG_X LengthUoM
Local_Dry_Stripped_CoG_Y LengthUoM
Local_Dry_Stripped_CoG_Z LengthUoM
Local_Test_CoG_X LengthUoM
Local_Test_CoG_Y LengthUoM
Local_Test_CoG_Z LengthUoM
Local_Wet_Operating_CoG_X LengthUoM
Local_Wet_Operating_CoG_Y LengthUoM
Local_Wet_Operating_CoG_Z LengthUoM
LocalizedShortMaterialDescription string
LongMaterialDescription string
107
Property Type
Manufacturer ManufacturerIndustryPractice2
ManufacturerIndustryPractice ManufacturerIndustryPractices
ManufacturerModelNumber ManufacturerModels
ManufacturerName ManufacturerNames
Material_DampingCoefficient double
Material_Density DensityUoM
Material_ElasticModulus ElasticModulusUoM
Material_Emissivity double
Material_MaxCompression double
Material_MaxShear double
Material_MaxTension double
Material_PoissonRatio double
Material_ShearModulus PressureUoM
Material_SpecificHeat SpecificHeatCapacityUoM
Material_ThermalConductivity ThermalConductivityUoM
Material_ThermalExpansionCoefficient double
Material_UltimateStress StressUoM
Material_YieldStress StressUoM
MaterialsCategory MaterialsGradePractice2
MaterialsGrade MaterialsGradePractice3
MaterialsGradePractice MaterialsGradePractices
MaximumAngularVelocity AngularVelocityUoM
MaximumPressureDrop DiffPressUoM
MechanicalEquipment_DistanceBetweenInOut LengthUoM
MechanicalEquipment_OperatingTimePerTime TimePerTimeUoM
MechanicalEquipment_OperationMode MechanicalEquipmentOperatingModes
MinimumPressureDrop DiffPressUoM
MomentumPressureDrop DiffPressUoM
Name string128
NormDesignPressMax PressureUoM
NormDesignPressMin PressureUoM
NormDesignTempMax TemperatureUoM
NormDesignTempMin TemperatureUoM
NumberOfNozzlesRequired int
NumberOfPoles int
OrientationMatrix_x0 double
OrientationMatrix_x1 double
OrientationMatrix_x2 double
OrientationMatrix_y0 double
OrientationMatrix_y1 double
OrientationMatrix_y2 double
OrientationMatrix_z0 double
OrientationMatrix_z1 double
OrientationMatrix_z2 double
PlannedOrientation PlannedOrientations
PressureDrop DiffPressUoM
108
Property Type
PressureDrop_Dirty DiffPressUoM
PressureDropLimit DiffPressUoM
PressureDropPercent PercentageUoM
PressureRating PressureRatings
PressureRating2 PressureRatings2
ProcessEquipment_ApplicableStandard ProcessEquipmentApplicableStandards
ProcessEquipment_MountingIsPlanned boolean
ProcessEquipment_PlannedOperatingFactor PercentageUoM
RequisitionResponsibility RequisitionResponsibilities
RequisitionType RequisitionTypes
RotationDirection RotationViewsFromDriveEnd
ShortMaterialDescription string
SlopedEquipment_Angle AngleUoM
StaticPressureDrop DiffPressUoM
SupplyResponsibility SupplyResponsibilities
SurfaceArea AreaUoM
SynchronousSpeed AngularVelocityUoM
TemperatureRating TemperatureUoM
TestingMaxPressure PressureUoM
TestingMaxTemp TemperatureUoM
TestingMinPressure PressureUoM
TestingMinTemp TemperatureUoM
TestingPercentage double
{E7B4AB1A-CE33-4021-909C-
TestingRequirements EAF0F8334C09}
TestingResponsibility TestingResponsibilities
TestingType TestingType2
TestWeight MassUoM
TotalInsulThick LengthUoM
UID string128
Vendor string
VendorPartNumber string
VolumetricCapacity VolumeUoM
Wet_Operating_Weight MassUoM
Relationship Name
ControlEquipment
DistribConnAccessoryParts
EquipDataSheet_DatasheetItems
EquipEquip
EquipmentComponentComposition
EquipmentComponents
EquipmentNozzle
EquipmentOcc_EquipmentOcc
109
Relationship Name
MatlExpansion
NonDrawingItemCollection
OwnsImpliedItems
P3DSystemHierarchy
Part_PartOcc
PBSItemCollection
PBSItemFacilityPoint
PBSItemHasImpliedParts
PBSItemNotes
PBSWBS
PlannedMatlActualization
PlannedMatlConstruction
PlannedMatlProcurement
ProcessDataCaseComposition
ProcessEquipInstrument
ProcessPointCollection
SignalPorts
110
- Figure 70 says something important, viz., "occurrences of mixing
equipment are 'planned material'". See the "required" implies
between "IMixingEquipmentOcc" and "IPlannedMatl"? That means
that the agitator object that will be published will be, for sure,
"mixing equipment" and "planned material"
- Figure 71 adds the "equipment" role to the diagram (on the "part" side
of the model). Now you see that "process equipment" must be a type
of "equipment", and that an occurrence of equipment may expose
equipment type-ness ("IEquipment").
- Figure 72 shows a more complete story: the left-side is now clearly
"part" and the right-side is clearly "occurrence". Furthermore, we can
see some of the underlying relationships that might exist between
"equipment" and "occurrences of equipment".
- Figure 73 is the same as Figure 72, but puts emphasis on the fact
that the left-side, or "part" side, carries the "type-ness" of
equipment.
- !!BREAKTIME!!
A Child's Poem
Do the Class -> Interface -> Relation -> Property -> Type thing remind you of
the child's poem "As I was going to St. Ives"?
(P.S. I hope you get 1 and not 2,801 as the answer to the riddle!)
111
26. Secrets of the SmartPlant schema
Master
Right here I'm going to state that I will NOT
reproduce the 6-pound manual entitled "SPF Modeling
and Schema Editor, Course Guide", which you get when
you take the course through normal channels at
Intergraph. So I hereby request that you take some
time and Read That Fine Manual (RTFM). However, on
a recent trip up the mountain, the Guru started a spiel
that goes like this...
Now, we're thinking about a "pump", and what roles it yields up to the
universe:
- It is a piece of equipment
112
- It is used to move fluid
- We're going to buy some for the new plant
- It rotates
- It needs a motor to drive it
- It has parts inside of a shell
- It is a manufactured item
- It has weight, and center-of-gravity
- etc. to the bazillionth place
Just a simple pump can be horribly complex. By that, we mean that there
can be lots of "roles", each of which has many properties and relationships
to other roles. The SmartPlant schema helps to control the complexity.
Now, look at these properties of a pump for a minute. It only shows a few
hundred properties, but real-world pumps can have thousands!
- Since a pump "is a piece of equipment", we will group all the ideas
about it's "equipment-ness" on the "IEquipment" InterfaceDef
- Since "it is used to move fluid", we will group all the ideas about it's
ability to move fluid on the "IFluidTransferMachine" InterfaceDef
- Since "we're going to buy some for the new plant", we will group all
those ideas on the "IPlannedMatl" InterfaceDef (Planned material =
we plan to purchase it)
- Since "it rotates", we will group all the ideas about its rotating-ness
on the "IRotatingItem" InterfaceDef.
Well, let's pick on one of these things and grind it down to size:
113
- Properties of a "rotating item"
o Angular velocity
o Asynchronous speed
o Maximum angular velocity
o Rotation direction
o Synchronous speed
Remember that data normalization stuff, and that 5NF stuff? Here's
where the rubber meets the road. You EXPECT that properties about
rotating items are on IRotatingItem, and nowhere else! If you are thinking
about adding a PropertyDef to an InterfaceDef, you MUST think like this
and do it like this! This is the "IRotatingItem" InterfaceDef:
114
Figure 39 Classes that are Polymorphic with respect to IRotatingItem
115
Did I say "simple diagram"!? After looking at Figure 39, I hope you have
some appreciation for how difficult it would be to try to model all those
classes in some way that made the fact that they all are "rotating items"
visible in a useable way. Do you agree that the Linnaean taxonomic model
probably fails in this case?
116
Ideas about ClassDefs
First, model them last. They're just a collection of InterfaceDefs. After
you get to a certain level of competence with the model, you'll be able to
look at an Interface model in UML and just "know" what ClassDefs are
required.
Naming ClassDefs
Start ClassDef names with some identifier that groups them with the
software tool that publishes them. For example, objects that will be
published by SmartPlant 3D probably should begin with "P3D".
117
Ideas about Enumerated Lists (including EnumListLevelType)
It is very common for engineering applications to use large lists for
classifying objects. For example, what kinds of "instruments" can appear in
a process plant? I don't know. But we can gnaw the problem down to size by
approaching the modeling problem with the handy-dandy "hierarchy of
instrument types" model. For those of you who were awake, and fully
appreciated Figure 39, let me assure you that we're not going to fall into the
Linnaean taxonomic model failure situation, for the simple reason that
"instrument types" is a monolithic set of entities, and can easily be
expressed as a normal hierarchy.
118
Other than the fact that most data modelers don't know what "LG" or "LI"
mean, everyone can grasp the concept of a multi-level hierarchy.
Where does it all end? All good hierarchies come to an end, and it is usually
at a "leaf-node", but that is not a requirement in the SmartPlant schema.
Incomplete Hierarchies
The SmartPlant schema accommodates tools that don't, or can't think about
all those pesky hierarchical levels. If your tool is used for early-stage
design, you might not know what type of "whatever" that you will use to
fulfill a certain "facility" request, e.g., a facility that requires fluid pressure
in a pipeline to increase by 2% might be fulfilled by a pump, or a reducing
valve, or gravity, or who-knows?
119
Beating Enumerated Lists into Enumeration Hierarchies
Enumerated lists can be combined to form an enumeration hierarchy. All
nodes in the hierarchy that are EnumListTypes are enumerated entries for
the EnumListType above them. Finally, All EnumListType nodes must contain
EnumEnums (enumerated list entries) or other EnumListTypes (enumerated
lists.
These 3 properties will be used as a 3-level list that will classify piping
components, i.e.,
- The PropertyDef "PipingComponentType1" will contain values that are
at Level-1 (the least-detailed) of the hierarchy
- The PropertyDef "PipingComponentType2" will contain values that are
at Level-2 of the hierarchy
- The PropertyDef "PipingComponentType3" will contain values that are
at Level-3 (the most-detailed) of the hierarchy
120
Scoping with an EnumListLevelType
How will we "scope" these properties? - that's a little weird - let's look at
the hierarchy of piping component types in Appendix G, then come back
here.
Do you see that the value that we're going to put into property 3, i.e.,
"PipingComponentTypes3" (the 3rd-level of the hierarchy)
- Depends on the value that we put in property 2, i.e.,
"PipingComponentTypes2" (the 2nd-level of the hierarchy)
o which depends on the value that we put in property 1, i.e.,
"PipingComponentTypes1".
121
- Then we slice through the hierarchy so that all Level-2 properties line up,
and use that set of values as the scoping for "PipingComponentTypes2".
- Finally, "PipingComponentTypes1" is ScopedBy the Level-1 entries, viz.,
"PipingComponentTypes1".
122
Figure 45 3 Levels of Scoping
Figure 46 "IPipingComponent"
123
The View from the Top of the Mountain
You've been climbing for a long time - have you figured it out yet? What are
the important concepts of the SmartPlant schema model?
Class
- is "a group of similar things"
- is defined by "ClassDef"
- Realizes roles (via interfaces)
Object
- is "an instance of a class"
- has a unique identifier
- is published and retrieved in a "document" to SPF
Interface
- is "a role, used for grouping properties and form relationships with
other interfaces"
- is defined by "InterfaceDef"
- Implies other interfaces and thus inherits their characteristics
Property
- is "a basic or essential attribute shared by all members of a class"
- is defined by "PropertyDef"
- is ExposedBy Interfaces
- is ScopedBy Data Types or Enumerated Lists
Relationship
- is "the rules by which two roles interact"
- is defined by "RelDef"
- Connects roles (Interfaces) to other roles (Interfaces)
124
Appendix A. Rules of Data Normalization
Data normalization was formalized by E.F. Codd and there are many good books on the
subject. Here is a summary of the 5 levels of normalization.
1NF (1st normal form) - Eliminate Repeating Groups - Make a separate table for each set
of related attributes, and give each table a primary key.
2NF (2nd normal form) - Eliminate Redundant Data - If an attribute depends on only part
of a multi-valued key, remove it to a separate table.
3NF (3rd normal form) - Eliminate Columns Not Dependent on Key - If attributes do not
contribute to a description of the key, remove them to a separate table.
4NF (4th normal form) - Isolate Independent Multiple Relationships - No table may
contain two or more 1:n or n:m relationships that are not directly related.
5NF (5th normal form) - Isolate Semantically Related Multiple Relationships - There
may be practical constrains on information that justify separating logically related many-
to-many relationships.
125
Appendix B. Linnaean Taxonomic Model
"The practice of classifying organisms into hierarchical groups originated with Aristotle
and was codified into nearly immutable biological law by Linnaeus. The heart of
taxonomy is the biological species, which forms the foundation for higher levels of
classification. Whereas species have long been established among sexual eukaryotes,
achieving a meaningful species concept for prokaryotes has been an onerous task and has
proven exceedingly difficult for describing viruses and bacteriophages. Moreover, the
assembly of viral “species” into higher-order taxonomic groupings has been even more
tenuous, since these groupings were based initially on limited numbers of morphological
features and more recently on overall genomic similarities. The wealth of nucleotide
sequence information that catalyzed a revolution in the taxonomy of free-living
organisms necessitates a reevaluation of the concept of viral species, genera, families,
and higher levels of classification. Just as microbiologists discarded dubious
morphological traits in favor of more accurate molecular yardsticks of evolutionary
change, virologists can gain new insight into viral evolution through the rigorous
analyses afforded by the molecular phylogenetics of viral genes. For bacteriophages, such
dissections of genomic sequences reveal fundamental flaws in the Linnaean paradigm
that necessitate a new view of viral evolution, classification, and taxonomy."
126
This website Linnaean taxonomic model presents a reasonable example of
the Linnaean taxonomic model.
127
Summary
Living things are divided into Kingdom, Phylum, Class, Order, Family, Genus
and Species
128
Appendix C. Schema Element Definitions
Figure 48 ClassDef
129
Figure 50 EnumEnum
130
Figure 52 EnumListType
131
Figure 54 InterfaceDef
132
Figure 56 PropertyDef
133
Figure 58 RelDef
134
Figure 59 RelDef Class
135
Figure 60 UoMEnum
136
Figure 62 UoMListType
137
Appendix D. Definitions, Acronyms and
Abbreviations
Adapter Authoring tool software that facilitates the sharing of data between
itself and SmartPlant Enterprise. Tool adapters generate XML files
for publish operations and consume XML when tools retrieve
documents
Authoring tools Applications where documents are created and then shared through
SmartPlant Enterprise, including Zyqad, SmartPlant P&ID,
SmartPlant Electrical, SmartPlant Instrumentation, SmartPlant 3D,
and SmartPlant Foundation
Cardinality It means "count", e.g., a cardinality of "1" means that exactly "1" of
something should exist.
Class A group of similar things. Classes specify an object's attributes
(data elements) and methods (member functions). It generally
represents a real-world object, close to the concept of a biological
species.
ClassDef A SmartPlant schema element that defines a Class. A specification
of the low-level structure and behavior of some set of objects.
Component A subdivision of the complete SmartPlant schema that contains a
schema set of class definitions that are used within a specific domain or
application area. There is typically one component schema per
published document type.
e.g. for example
EDR Engineering Data Repository. It is the underlying SPF database
where all the "things" are stored, shared, and reported on.
EdgeDef Single or multiple relationship definitions with direction. In the
schema, an edge definition is used to traverse from a starting object
to related objects
SmartPlant schema An XML file that describes the structure of the XML files
generated by SmartPlant Enterprise authoring tools in much the
same way as a data dictionary describes the structure of a database.
As tools publish documents in XML format, those documents must
adhere to the format defined by the schema to ensure that the XML
data can be loaded into SmartPlant Foundation and retrieved into
the other authoring tools
Enumerated list A list of possible string property values defined for a property
(EnumListType) definition in the SmartPlant schema. a.k.a. enumerated sets, pick
lists, code lists, and lookups
Enumerated value A member of an enumerated set that defines one possible value for
(EnumEnum) a property in the SmartPlant schema. Enumerated values are
sometimes called enumerated entries
GraphDef A connected network of edge definitions with structure. Each graph
138
definition in the SmartPlant schema starts at an interface definition
and traverses through one or more relationship definitions to
another interface definition at the other end. Graph definitions are
sometimes referred to as directed graph definitions
Hierarchy A classified structure with superiors, or roots, and subordinates, or
dependents, used for grouping data
Implies The relationship between two interface definitions in the
SmartPlant schema. If an interface definition implies another
interface definition, then any class definition that realizes the first
interface definition can also realize the implied interface definition
Interface The place where two things meet, usually for the purpose of
exposing a "role", and may be used to group properties, and to form
relationships with other interfaces. An interface is abstract, it is not
a class
InterfaceDef An SmartPlant schema element that defines an Interface
Linnaean A scientific way of classifying and naming living things
taxonomic model
Mapping A mechanism for software to convert authoring tool data, described
by the tool schema, to and from SPF data, described by the
SmartPlant schema. See Schema Mapping
Meta schema A set of schema objects that describe the objects in the SmartPlant
schema. The meta schema provides the building blocks upon which
the SmartPlant schema is built
Object An instance of a class, e.g., 3.14159 is an instance of a floating-
point numeric type. An instance of class PumpOcc will be a tagged
pump.
Occurrence The fact of something existing, or how much of it exists
Ordinality Numerically order something, e.g., first, second, third...
Orthogonal Having a set of mutually perpendicular axes; meeting at right
angles.
Part A part is a section of a greater whole. If we're talking about, e.g.,
equipment {pumps, vessels, etc.}, then "part-ness" is really the
"type hierarchy" that discriminates the different types of equipment.
Plant breakdown The composition of the plant based on the grouping of physical
structure (PBS) objects by their function in the plant. The plant usually occupies the
top level of the hierarchy and is typically followed by areas and
units
POSC Caesar A European standards body, Petro technical Open Standards
Committee that is trying to make ISO 15926 a de facto standard for
the process industry, including oil & gas
Primary interface Defines the set of possible roles for a ClassDef, and should imply
everything that is known about the ClassDef.
Project A logical unit of data that is a subset of the items that make up a
plant. A project is used for making controlled, incremental changes
to the data in a plant. There can be multiple projects for a plant at
any given time
139
Publish To share a document and its data with other authoring tools by
exporting an XML file containing the document data and
relationships to SmartPlant Foundation. When a container is
published, the software places the XML file in the appropriate
SmartPlant Foundation vault and loads the data from the XML file
into the SmartPlant Foundation database. After the document is
published, users can retrieve the data from the XML file located in
the SmartPlant Foundation vault into other authoring tools
Realize The relationship between class definitions and interface definitions
in the SmartPlant schema. Class definitions realize interface
definitions. The interface definitions that are realized by a class
definition expose the properties for that class definition
Relationship An SmartPlant schema element that represents a relationship
between two elements
RelDef Associations between interface definitions in the SmartPlant
schema. Relationship definitions identify two specific objects that
fulfill the roles on each end of the relationship
Retrieve To import document data from an .xml file that was published by
another authoring tool for the purpose of maintaining consistency
of data across tools. When you retrieve a document, most authoring
tools analyze the impact of the newly retrieved data on the existing
database and then place tasks on the authoring tool's To Do List
that allow you to create, delete, or modify items at the appropriate
time in the design process
Schema A diagrammatic representation, an outline, or a model
ScopedBy The relationship between “property definitions” and “property
types” in the SmartPlant schema. The scoped by relationship
specifies the property type that defines acceptable values, or scopes,
a particular property definition. Every property definition in the
SmartPlant schema is scoped by one and only one property type.
All properties of that property definition must be of that property
type.
Schema A suite of ActiveX components that provide functionality
component surrounding the creation, parsing, validation, and comparison of the
SmartPlant schema and data. The tool adapters interact with the
Schema Component to read the SmartPlant schema, to create data
for publish, and to retrieve data
Semantic The dictionary says "the study of meaning", but we mean it to be
more like "the rules that are invoked when an action takes place"
Shared object A schema object used to group together similar class definitions
that define the same object in different domains. Class definitions
that can be shared have a Sharing relationship with shared object
definitions in the SmartPlant schema
SI unit International System of Units, sometimes referred to as the metric
system. When values for units of measure are published, they are
converted to SI units and stored, regardless of the units of measure
140
selected when the user defined the value in the authoring tool
SP3D SmartPlant 3D
SPEL SmartPlant Electrical
SmartPlant A suite of integrated engineering applications delivered together,
Enterprise whose purpose is the total information of a large facility, e.g.,
process plant, ship, etc.
SmartPlant The underlying software framework that allows SmartPlant tools to
Foundation (SPF) integrate. Provides database, rules, document management, etc.
SmartPlant SmartPlant integration standardizes and improves the
Integration communication among the various SmartPlant Enterprise authoring
tools used in the course of designing, constructing, and operating a
plant. SmartPlant Integration manages data exchange among these
authoring tools, which enables sharing and re-use of plant
information throughout the plant lifecycle
Taxonomy Wikipedia says "(from Greek verb tassein = "to classify" and
nomos = law, science) may refer to:
- the science of classifying living things
- a system of classification in some other field.
Taxonomies are frequently hierarchical in structure. However,
taxonomy may also refer to relationship schemes other than
hierarchies, such as network structures."
TEF The Engineering Framework; the technology behind SmartPlant
integration
Tool schema A set of schema objects that describe the data in the authoring tool
databases before it is transformed into the format prescribed by the
SmartPlant schema. The tool schema also specifies the mapping
between objects in the tool database and the SmartPlant schema
UML Unified Modeling Language, a popular way of visually expressing
a schema
ViewDef A named group of properties extracted from the possible properties
that a graph definition exposes. View definitions are used to
provide a different view of data from that provided by the
underlying schema
viz "Namely" or "that is to say"
Work breakdown The composition of the plant based on the construction work to be
structure (WBS) completed. The plant usually occupies the top level of the
hierarchy; it is typically followed by projects, contracts, and
documents
XML Extensible Markup Language; the format for all documents
published to SmartPlant Enterprise or retrieved from SmartPlant
Enterprise. These XML files must conform to the structure defined
by the SmartPlant schema
141
Appendix E. Some Properties of a Pump
Prop
# Property Type
1 Pump_CoolingWaterPlan eCoolingWaterPlan
2 Pump_SealFlushPipingPlanDescription eSealFlushPipingPlan_API610
3 FluidTransferMachine_DifferentialPressure DiffPressUoM
4 FluidTransferMachine_RatedPower PowerUoM
5 FluidTransferMachine_Capacity VolumetricFlowUoM
6 EqType0 EqTypes0
7 EqType1 EqTypes1
8 EqType2 EqTypes2
9 EqType3 EqTypes3
10 EqType4 EqTypes4
11 EqType5 EqTypes5
12 EqType6 EqTypes6
13 EqTypeDescription string
14 EquipmentTrimSpec string
15 NumberOfNozzlesRequired int
16 SteamJacketPressure PressureUoM
17 Jacket_CleaningRqmt CleaningRqmts
18 Jacket_CleaningResponsibility CleaningResponsibilities
19 Jacket_CoatingRequirement CoatingReq1
20 Jacket_CoatingType CoatingReq2
21 Jacket_ExteriorSurfaceTreatment ExteriorSurfaceTreatments
22 Jacket_InteriorSurfaceTreatment InteriorSurfaceTreatments
23 Jacket_CoatingColor CoatingColors
24 Jacket_CorrosionAllowance LengthUoM
25 Jacket_FlowDirection FlowDirections
26 Jacket_FluidSystem FluidSystems
27 Jacket_AvgInsulDens DensityUoM
28 Jacket_InsulCompositeMatl InsulCompositeMaterials
29 Jacket_InsulPurpose1 InsulPurposes1
30 Jacket_InsulPurpose2 InsulPurposes2
31 Jacket_InsulPurpose3 InsulPurposes3
32 Jacket_InsulSpec string
33 Jacket_InsulTemp TemperatureUoM
34 Jacket_InsulThickSrc InsulThickSrcs
35 Jacket_TotalInsulThick LengthUoM
36 Jacket_OperatingTemperature TemperatureUoM
37 Jacket_InsulationSurfaceArea AreaUoM
38 Jacket_InsulationWeight MassUoM
39 Jacket_ItemTag string
40 Jacket_ItemTagSequenceNumber string
41 Jacket_ItemTagSuffix string
42 Jacket_SteamOutPressure PressureUoM
43 Jacket_SteamoutReq SteamOutReqs
142
Prop
# Property Type
44 Jacket_SteamoutTemperature TemperatureUoM
45 Jacket_MaterialOfConstructionClass string
46 Jacket_NominalDiameter LengthUoM
47 Jacket_OperatingFluidCode FluidCodes
48 Jacket_PipingMaterialsClass string
49 Jacket_ScheduleOrThickness ScheduleThicknessPractices
50 Jacket_ScheduleThickness2 ScheduleThicknesses2
51 Jacket_HeatTransferCoefficient CoefficientOfHeatTransferUoM
52 Jacket_HeatTransferArea AreaUoM
53 UID string128
54 Name string128
55 Description string
56 MaterialsCategory MaterialsGradePractice2
57 MaterialsGrade MaterialsGradePractice3
58 MaterialsGradePractice MaterialsGradePractices
59 LongMaterialDescription string
60 ShortMaterialDescription string
61 LocalizedShortMaterialDescription string
62 Material_DampingCoefficient double
63 Material_Density DensityUoM
64 Material_ElasticModulus ElasticModulusUoM
65 Material_Emissivity double
66 Material_MaxCompression double
67 Material_MaxShear double
68 Material_MaxTension double
69 Material_PoissonRatio double
70 Material_ShearModulus PressureUoM
71 Material_SpecificHeat SpecificHeatCapacityUoM
72 Material_ThermalConductivity ThermalConductivityUoM
73 Material_ThermalExpansionCoefficient double
74 Material_UltimateStress StressUoM
75 Material_YieldStress StressUoM
76 SurfaceArea AreaUoM
77 VolumetricCapacity VolumeUoM
78 Dry_Stripped_Weight MassUoM
79 Dry_Installed_Weight MassUoM
80 Wet_Operating_Weight MassUoM
81 DesignWeight MassUoM
82 TestWeight MassUoM
83 Local_Dry_Stripped_CoG_X LengthUoM
84 Local_Dry_Installed_CoG_X LengthUoM
85 Local_Wet_Operating_CoG_X LengthUoM
86 Local_Design_CoG_X LengthUoM
87 Local_Dry_Stripped_CoG_Y LengthUoM
88 Local_Dry_Stripped_CoG_Z LengthUoM
89 Local_Wet_Operating_CoG_Y LengthUoM
90 Local_Wet_Operating_CoG_Z LengthUoM
143
Prop
# Property Type
91 Local_Design_CoG_Y LengthUoM
92 Local_Design_CoG_Z LengthUoM
93 Local_Dry_Installed_CoG_Y LengthUoM
94 Local_Dry_Installed_CoG_Z LengthUoM
95 Local_Test_CoG_X LengthUoM
96 Local_Test_CoG_Y LengthUoM
97 Local_Test_CoG_Z LengthUoM
98 Global_Design_CoG_X LengthUoM
99 Global_Design_CoG_Y LengthUoM
100 Global_Design_CoG_Z LengthUoM
101 Global_Dry_Installed_CoG_X LengthUoM
102 Global_Dry_Installed_CoG_Y LengthUoM
103 Global_Dry_Installed_CoG_Z LengthUoM
104 Global_Dry_Stripped_CoG_X LengthUoM
105 Global_Dry_Stripped_CoG_Y LengthUoM
106 Global_Dry_Stripped_CoG_Z LengthUoM
107 Global_Test_CoG_X LengthUoM
108 Global_Test_CoG_Y LengthUoM
109 Global_Test_CoG_Z LengthUoM
110 Global_Wet_Operating_CoG_X LengthUoM
111 Global_Wet_Operating_CoG_Y LengthUoM
112 Global_Wet_Operating_CoG_Z LengthUoM
113 LubricationRequirement string
114 PressureDrop_Dirty DiffPressUoM
115 PressureDrop DiffPressUoM
116 MaximumPressureDrop DiffPressUoM
117 MinimumPressureDrop DiffPressUoM
118 PressureDropLimit DiffPressUoM
119 FrictionalPressureDrop DiffPressUoM
120 MomentumPressureDrop DiffPressUoM
121 PressureDropPercent PercentageUoM
122 StaticPressureDrop DiffPressUoM
123 CorrosionAllowance LengthUoM
124 FluidServiceCategory FluidServiceCategories
125 TemperatureRating TemperatureUoM
126 FluidServiceCategory2 FluidServiceCategories2
127 CoatingRequirement CoatingReq1
128 CoatingType CoatingReq2
129 ExteriorSurfaceTreatment ExteriorSurfaceTreatments
130 InteriorSurfaceTreatment InteriorSurfaceTreatments
131 CoatingColor CoatingColors
132 PaintByManufacturersStandard boolean
133 PaintSpecifications_Exterior boolean
134 PaintSpecifications_Interior boolean
135 PaintSpecifications_SurfacePreparation PaintSurfacePreparations
136 PaintSpecifications_Underside boolean
137 PaintSpecifications_MaterialName PaintMaterialNames
144
Prop
# Property Type
138 Paint_ApplicableSpecification PaintApplicableSpecifications
139 PaintSpecifications_Primer PaintPrimers
140 PaintSpecifications_Grouting boolean
141 PaintSpecifications_Epoxy PaintSpecEpoxy
142 PaintSpecifications_FinishCoat PaintSpecFinishCoatings
143 PaintingResponsibility PaintingResponsibilities
144 PressureRating2 PressureRatings2
145 PressureRating PressureRatings
146 Tracing_MaxTemperature TemperatureUoM
147 Tracing_MinTemperature TemperatureUoM
148 HTraceMediumTemp TemperatureUoM
149 HTraceRqmt HTraceRqmts
150 HTraceRqmt2 HTraceRqmts2
151 HTraceRqmt3 HTraceRqmts3
152 AverageActiveLoad PowerUoM
153 ConsumedActiveLoad PowerUoM
154 ConsumedApparentLoad ElectricLoadUoM
155 ConsumedReactiveLoad ReactiveLoadUoM
156 ElecDemandFactor double
157 XCoincidenceFactor double
158 YCoincidenceFactor double
159 ZCoincidenceFactor double
160 ZZCoincidenceFactor double
161 ParticularActiveLoad PowerUoM
162 ParticularApparentLoad ElectricLoadUoM
163 ParticularPower PowerUoM
164 ParticularReactiveLoad ReactiveLoadUoM
165 InsulatedItem_OperatingTemperature TemperatureUoM
166 InsulationSurfaceArea AreaUoM
167 InsulationWeight MassUoM
168 InsulTemp TemperatureUoM
169 InsulThickSrc InsulThickSrcs
170 InsulSpec string
171 InsulCompositeMatl InsulCompositeMaterials
172 AvgInsulDens DensityUoM
173 TotalInsulThick LengthUoM
174 InsulPurpose1 InsulPurposes1
175 InsulPurpose2 InsulPurposes2
176 InsulPurpose3 InsulPurposes3
177 GasGroup GasGroups
178 HazardousAreaClassification EquipmentAreaClassifications
179 HazardousAreaTemperatureClass TemperatureClasses
180 AutomaticIgnitionRequired boolean
181 AutomaticReIgnitionRequired boolean
182 BatteryBackupRequried boolean
183 FlameProofRequired boolean
184 LocalAlarmRequired boolean
145
Prop
# Property Type
185 ManualIgnitionRequired boolean
186 PilotFailureDetectionRequired boolean
187 RechargeableRequired boolean
188 RemoteAlarmRequired boolean
189 VoltFreeContactsRequired boolean
190 WeatherProofRequired boolean
191 ExplosionProtection ExplosionProtectionCategories
192 MechanicalEquipment_OperationMode MechanicalEquipmentOperatingModes
193 MechanicalEquipment_DistanceBetweenInOut LengthUoM
194 MechanicalEquipment_OperatingTimePerTime TimePerTimeUoM
195 ProcessEquipment_MountingIsPlanned boolean
196 ProcessEquipment_ApplicableStandard ProcessEquipmentApplicableStandards
197 ProcessEquipment_PlannedOperatingFactor PercentageUoM
198 DifferentialTemperature DiffTempUoM
199 SlopedEquipment_Angle AngleUoM
200 DesignResponsibility DesignResponsibilities
201 DesignApprovalRequired boolean
202 ElectricalEquipmentDesignType ElectricEquipmentDesignTypes
203 Design_Temperature TemperatureUoM
204 Design_Pressure PressureUoM
205 Design_Temperature2 TemperatureUoM
206 Design_Pressure2 PressureUoM
207 Design_VacuumTemperature TemperatureUoM
208 Design_VacuumPressure PressureUoM
209 Design_SteamOutTemperature TemperatureUoM
210 Design_SteamOutPressure PressureUoM
211 Design_SteamOutRequired boolean
212 Design_ShortTermTemperature TemperatureUoM
213 Design_ShortTermPressure PressureUoM
214 Design_ShortTermDuration TimeUoM
215 Design_VentingTemperature TemperatureUoM
216 Design_MetalTemperature TemperatureUoM
217 Design_VaporPressure PressureUoM
218 Design_MassFlowRate MassFlowUoM
219 Design_SpecificGravityMassBasis double
220 Design_Viscosity AbsoluteViscosityUoM
221 Design_FluidState FluidPhases
222 HeightRelativeToGrade LengthUoM
223 ConstructionStatus ConstructionStati
224 ConstructionStatus2 ConstructStati2
225 ExpansionCount int
226 CatalogName string
227 CatalogPartNumber string
228 TestingMaxPressure PressureUoM
229 TestingMaxTemp TemperatureUoM
230 TestingMinPressure PressureUoM
231 TestingMinTemp TemperatureUoM
146
Prop
# Property Type
232 TestingResponsibility TestingResponsibilities
233 TestingPercentage double
234 TestingRequirements TestingRequirements
235 TestingType TestingType2
236 CleaningRqmt CleaningRqmts
237 CleaningResponsibility CleaningResponsibilities
238 FabricationType FabricationRequirement2
239 FabricationRequirement FabricationRequirements
240 FabricationResponsibility FabricationResponsibility
241 FabricationTypeBasis FabricationTypeBases
242 FabricatedWeight MassUoM
243 FabricatorName string
244 InstallationResponsibility InstallationResponsibilities
245 ManufacturerIndustryPractice ManufacturerIndustryPractices
246 Manufacturer ManufacturerIndustryPractice2
247 ManufacturerName ManufacturerNames
248 ManufacturerModelNumber ManufacturerModels
249 EquipPrefix string
250 EquipSeqNo string
251 EquipSuff string
252 AltDesignTempMin TemperatureUoM
253 AltDesignTempMax TemperatureUoM
254 AltDesignPressMin PressureUoM
255 AltDesignPressMax PressureUoM
256 DesignCriteriaPressure2 PressureUoM
257 DesignCriteriaTemperature2 TemperatureUoM
258 NormDesignTempMin TemperatureUoM
259 NormDesignTempMax TemperatureUoM
260 NormDesignPressMin PressureUoM
261 NormDesignPressMax PressureUoM
262 DesignCriteriaFluidState FluidPhases
263 DesignCriteriaMassFlowRate MassFlowUoM
264 DesignCriteriaMetalTemperature TemperatureUoM
265 DesignCriteriaPower PowerUoM
266 DesignCriteriaPressure PressureUoM
267 DesignCriteriaShortTermDuration TimeUoM
268 DesignCriteriaShortTermPressure PressureUoM
269 DesignCriteriaShortTermTemperature TemperatureUoM
270 DesignCriteriaSpecificGravityMassBasis double
271 DesignCriteriaSpeed AngularVelocityUoM
272 DesignCriteriaSteamOutPressure PressureUoM
273 DesignCriteriaSteamOutRequirement boolean
274 DesignCriteriaSteamOutTemperature TemperatureUoM
275 DesignCriteriaTemperature TemperatureUoM
276 DesignCriteriaVacuumPressure PressureUoM
277 DesignCriteriaVacuumTemperature TemperatureUoM
278 DesignCriteriaVapourPressure PressureUoM
147
Prop
# Property Type
279 DesignCriteriaVentingTemperature TemperatureUoM
280 DesignCriteriaViscosity AbsoluteViscosityUoM
281 RequisitionResponsibility RequisitionResponsibilities
282 RequisitionType RequisitionTypes
283 SteamOutPressure PressureUoM
284 SteamOutTemperature TemperatureUoM
285 SteamoutReq SteamOutReqs
286 WBSItemPurpose WBSItemType2
287 WBSItemType WBSItemTypes
288 MountingOrientation MountingOrientations
289 MountingLocation IndoorsOutdoors
290 Lattitude AngleUoM
291 Longitude AngleUoM
292 LocationX LengthUoM
293 LocationY LengthUoM
294 LocationZ LengthUoM
295 Vendor string
296 VendorPartNumber string
297 HyperlinkToVendor string
298 SupplyResponsibility SupplyResponsibilities
299 HoldRemarks string
300 HoldStatus HoldStatus
301 Hold_Name string
302 Hold_CreatedDate YMD
303 Hold_Number string
304 Hold_ClosedBy string
305 Hold_ClosedDate YMD
306 Hold_CreatedBy string
307 MTO_ReportingRequirements ReportingRequirements
308 MTO_ReportingType ReportingRequirements2
309 SP3D_DateCreated DateTimeUoM
310 SP3D_DateLastModified DateTimeUoM
311 SP3D_UserCreated string
312 SP3D_UserLastModified string
313 SP3D_ApprovalStatus SP3DApprovalStatii
314 SP3D_ApprovalReason SP3DApprovalStatii
315 ProcessPlantEquipment_StressRelieving boolean
316 ProcessPlantEquipment_DischargePressureRated PressureUoM
317 ProcessPlantEquipment_Height LengthUoM
318 PlantItem_MaterialClass string
319 PlannedOrientation PlannedOrientations
320 OrientationMatrix_x0 double
321 OrientationMatrix_x1 double
322 OrientationMatrix_x2 double
323 OrientationMatrix_y0 double
324 OrientationMatrix_y1 double
325 OrientationMatrix_y2 double
148
Prop
# Property Type
326 OrientationMatrix_z0 double
327 OrientationMatrix_z1 double
328 OrientationMatrix_z2 double
329 Range1X LengthUoM
330 Range1Y LengthUoM
331 Range1Z LengthUoM
332 Range2X LengthUoM
333 Range2Y LengthUoM
334 Range2Z LengthUoM
335 ConstructionType ConstructionRequirement2
336 ConstructionRequirement ConstructionRequirements
337 MaximumAngularVelocity AngularVelocityUoM
338 AngularVelocity AngularVelocityUoM
339 AsynchronousSpeed AngularVelocityUoM
340 SynchronousSpeed AngularVelocityUoM
341 NumberOfPoles int
342 RotationDirection RotationViewsFromDriveEnd
These are not all the properties of a pump, but it's a good start.
149
Appendix F. Normalized Properties of a Pump
Interface Property
I3DDrawingItem
I3DObject SP3D_DateLastModified
I3DObject SP3D_DateCreated
I3DObject SP3D_UserCreated
I3DObject SP3D_UserLastModified
I3DObject SP3D_ApprovalStatus
I3DObject SP3D_ApprovalReason
I3DRange Range1X
I3DRange Range1Y
I3DRange Range2Z
I3DRange Range2Y
I3DRange Range1Z
I3DRange Range2X
IAltDgnPoint AltDesignPressMax
IAltDgnPoint AltDesignTempMax
IAltDgnPoint AltDesignPressMin
IAltDgnPoint AltDesignTempMin
IAltDgnPoint DesignCriteriaTemperature2
IAltDgnPoint DesignCriteriaPressure2
IAssemblyChild
ICleanedItem CleaningResponsibility
ICleanedItem CleaningRqmt
ICoatedItem CoatingRequirement
ICoatedItem CoatingType
ICoatedItem ExteriorSurfaceTreatment
ICoatedItem InteriorSurfaceTreatment
ICoatedItem CoatingColor
ICOGItem Global_Dry_Installed_CoG_Y
ICOGItem Global_Dry_Stripped_CoG_Y
ICOGItem Global_Dry_Stripped_CoG_X
ICOGItem Local_Test_CoG_Z
ICOGItem Local_Test_CoG_Y
ICOGItem Global_Wet_Operating_CoG_X
ICOGItem Global_Wet_Operating_CoG_Y
ICOGItem Global_Wet_Operating_CoG_Z
ICOGItem Global_Design_CoG_X
ICOGItem Global_Design_CoG_Y
ICOGItem Global_Design_CoG_Z
ICOGItem Global_Test_CoG_X
ICOGItem Local_Test_CoG_X
ICOGItem Local_Design_CoG_Z
ICOGItem Local_Dry_Stripped_CoG_X
ICOGItem Local_Dry_Stripped_CoG_Y
ICOGItem Local_Dry_Stripped_CoG_Z
ICOGItem Local_Dry_Installed_CoG_X
ICOGItem Local_Dry_Installed_CoG_Y
ICOGItem Local_Dry_Installed_CoG_Z
ICOGItem Local_Wet_Operating_CoG_X
ICOGItem Local_Wet_Operating_CoG_Y
ICOGItem Local_Wet_Operating_CoG_Z
150
Interface Property
ICOGItem Local_Design_CoG_X
ICOGItem Global_Dry_Installed_CoG_Z
ICOGItem Global_Dry_Installed_CoG_X
ICOGItem Global_Dry_Stripped_CoG_Z
ICOGItem Global_Test_CoG_Z
ICOGItem Global_Test_CoG_Y
ICOGItem Local_Design_CoG_Y
IConstructedItem ConstructionRequirement
IConstructedItem ConstructionType
IDesignedItem Design_FluidState
IDesignedItem Design_Temperature2
IDesignedItem Design_Pressure2
IDesignedItem Design_VacuumTemperature
IDesignedItem Design_VacuumPressure
IDesignedItem Design_SteamOutTemperature
IDesignedItem Design_Viscosity
IDesignedItem Design_SteamOutPressure
IDesignedItem Design_Pressure
IDesignedItem Design_Temperature
IDesignedItem ElectricalEquipmentDesignType
IDesignedItem DesignApprovalRequired
IDesignedItem DesignResponsibility
IDesignedItem Design_SteamOutRequired
IDesignedItem Design_SpecificGravityMassBasis
IDesignedItem Design_ShortTermTemperature
IDesignedItem Design_ShortTermPressure
IDesignedItem Design_ShortTermDuration
IDesignedItem Design_VentingTemperature
IDesignedItem Design_MetalTemperature
IDesignedItem Design_VaporPressure
IDesignedItem Design_MassFlowRate
IDesignPoint
IDifferentialTemperatureItem DifferentialTemperature
IDistributionPartOcc
IDocumentItem
IDrawingItem
IElecPowerConsumer XCoincidenceFactor
IElecPowerConsumer ZZCoincidenceFactor
IElecPowerConsumer ParticularActiveLoad
IElecPowerConsumer ParticularApparentLoad
IElecPowerConsumer ParticularPower
IElecPowerConsumer ParticularReactiveLoad
IElecPowerConsumer YCoincidenceFactor
IElecPowerConsumer ElecDemandFactor
IElecPowerConsumer ZCoincidenceFactor
IElecPowerConsumer ConsumedReactiveLoad
IElecPowerConsumer ConsumedApparentLoad
IElecPowerConsumer AverageActiveLoad
IElecPowerConsumer ConsumedActiveLoad
IEquipment EqType1
IEquipment EqType3
IEquipment EqType2
IEquipment EqType0
151
Interface Property
IEquipment NumberOfNozzlesRequired
IEquipment EquipmentTrimSpec
IEquipment EqTypeDescription
IEquipment EqType6
IEquipment EqType5
IEquipment EqType4
IEquipmentFoundationPortComposition
IEquipmentOcc SlopedEquipment_Angle
IExpandableThing ExpansionCount
IExplosionProtected ExplosionProtection
IFabricatedItem FabricatorName
IFabricatedItem FabricatedWeight
IFabricatedItem FabricationResponsibility
IFabricatedItem FabricationType
IFabricatedItem FabricationRequirement
IFabricatedItem FabricationTypeBasis
IFacilityPoint
IFluidTransferMachine FluidTransferMachine_Capacity
IFluidTransferMachine FluidTransferMachine_DifferentialPressure
IFluidTransferMachine FluidTransferMachine_RatedPower
IFluidTransferMachineOcc
IHazardousAreaRated WeatherProofRequired
IHazardousAreaRated VoltFreeContactsRequired
IHazardousAreaRated RemoteAlarmRequired
IHazardousAreaRated RechargeableRequired
IHazardousAreaRated PilotFailureDetectionRequired
IHazardousAreaRated ManualIgnitionRequired
IHazardousAreaRated LocalAlarmRequired
IHazardousAreaRated FlameProofRequired
IHazardousAreaRated BatteryBackupRequried
IHazardousAreaRated AutomaticReIgnitionRequired
IHazardousAreaRated AutomaticIgnitionRequired
IHazardousAreaRated HazardousAreaTemperatureClass
IHazardousAreaRated HazardousAreaClassification
IHazardousAreaRated GasGroup
IHeatTracedItem Tracing_MinTemperature
IHeatTracedItem Tracing_MaxTemperature
IHeatTracedItem HTraceRqmt
IHeatTracedItem HTraceMediumTemp
IHeatTracedItem HTraceRqmt2
IHeatTracedItem HTraceRqmt3
IHeldItem HoldRemarks
IHeldItem Hold_CreatedDate
IHeldItem Hold_ClosedBy
IHeldItem Hold_CreatedBy
IHeldItem Hold_ClosedDate
IHeldItem HoldStatus
IHeldItem Hold_Number
IHeldItem Hold_Name
IHydrostaticTestedItem
IInstalledItem InstallationResponsibility
IInsulatedItem InsulationWeight
IInsulatedItem InsulatedItem_OperatingTemperature
152
Interface Property
IInsulatedItem TotalInsulThick
IInsulatedItem AvgInsulDens
IInsulatedItem InsulCompositeMatl
IInsulatedItem InsulSpec
IInsulatedItem InsulationSurfaceArea
IInsulatedItem InsulThickSrc
IInsulatedItem InsulTemp
IInsulatedItem InsulPurpose1
IInsulatedItem InsulPurpose2
IInsulatedItem InsulPurpose3
IJacketedItem Jacket_ExteriorSurfaceTreatment
IJacketedItem Jacket_FlowDirection
IJacketedItem Jacket_CorrosionAllowance
IJacketedItem Jacket_ItemTagSuffix
IJacketedItem Jacket_CoatingType
IJacketedItem Jacket_ItemTagSequenceNumber
IJacketedItem Jacket_CoatingColor
IJacketedItem Jacket_SteamOutPressure
IJacketedItem Jacket_InteriorSurfaceTreatment
IJacketedItem Jacket_CoatingRequirement
IJacketedItem Jacket_CleaningResponsibility
IJacketedItem Jacket_FluidSystem
IJacketedItem Jacket_SteamoutReq
IJacketedItem Jacket_SteamoutTemperature
IJacketedItem Jacket_MaterialOfConstructionClass
IJacketedItem Jacket_NominalDiameter
IJacketedItem Jacket_OperatingFluidCode
IJacketedItem Jacket_PipingMaterialsClass
IJacketedItem Jacket_ScheduleOrThickness
IJacketedItem SteamJacketPressure
IJacketedItem Jacket_CleaningRqmt
IJacketedItem Jacket_AvgInsulDens
IJacketedItem Jacket_HeatTransferCoefficient
IJacketedItem Jacket_HeatTransferArea
IJacketedItem Jacket_ScheduleThickness2
IJacketedItem Jacket_InsulCompositeMatl
IJacketedItem Jacket_InsulPurpose1
IJacketedItem Jacket_InsulPurpose2
IJacketedItem Jacket_ItemTag
IJacketedItem Jacket_InsulationWeight
IJacketedItem Jacket_InsulationSurfaceArea
IJacketedItem Jacket_OperatingTemperature
IJacketedItem Jacket_TotalInsulThick
IJacketedItem Jacket_InsulThickSrc
IJacketedItem Jacket_InsulPurpose3
IJacketedItem Jacket_InsulSpec
IJacketedItem Jacket_InsulTemp
ILocatedItem Lattitude
ILocatedItem Longitude
ILocatedItem LocationZ
ILocatedItem LocationY
ILocatedItem LocationX
ILubricatedItem LubricationRequirement
153
Interface Property
IManufacturedItem ManufacturerIndustryPractice
IManufacturedItem ManufacturerModelNumber
IManufacturedItem ManufacturerName
IManufacturedItem Manufacturer
IMaterialItem
IMaterialTransferEquipment
IMaterialTransferEquipmentOcc
IMechanicalEquipment MechanicalEquipment_OperatingTimePerTime
IMechanicalEquipment MechanicalEquipment_OperationMode
IMechanicalEquipment MechanicalEquipment_DistanceBetweenInOut
IMemberSystemParent
IMfgParent
IMountedItem MountingLocation
IMountedItem MountingOrientation
IMTOInfo MTO_ReportingType
IMTOInfo MTO_ReportingRequirements
INamedEquipment EquipSuff
INamedEquipment EquipPrefix
INamedEquipment EquipSeqNo
INonDrawingItem
INormalDgnPoint NormDesignPressMax
INormalDgnPoint NormDesignPressMin
INormalDgnPoint NormDesignTempMax
INormalDgnPoint NormDesignTempMin
INormalDgnPoint DesignCriteriaViscosity
INormalDgnPoint DesignCriteriaFluidState
INormalDgnPoint DesignCriteriaMassFlowRate
INormalDgnPoint DesignCriteriaMetalTemperature
INormalDgnPoint DesignCriteriaVentingTemperature
INormalDgnPoint DesignCriteriaVapourPressure
INormalDgnPoint DesignCriteriaVacuumTemperature
INormalDgnPoint DesignCriteriaVacuumPressure
INormalDgnPoint DesignCriteriaTemperature
INormalDgnPoint DesignCriteriaSteamOutTemperature
INormalDgnPoint DesignCriteriaSteamOutRequirement
INormalDgnPoint DesignCriteriaSteamOutPressure
INormalDgnPoint DesignCriteriaSpeed
INormalDgnPoint DesignCriteriaSpecificGravityMassBasis
INormalDgnPoint DesignCriteriaShortTermTemperature
INormalDgnPoint DesignCriteriaPower
INormalDgnPoint DesignCriteriaPressure
INormalDgnPoint DesignCriteriaShortTermPressure
INormalDgnPoint DesignCriteriaShortTermDuration
INoteCollection
IObject UID
IObject Name
IObject Description
IOrientedItem OrientationMatrix_x1
IOrientedItem OrientationMatrix_y2
IOrientedItem OrientationMatrix_z0
IOrientedItem OrientationMatrix_z1
IOrientedItem OrientationMatrix_z2
IOrientedItem PlannedOrientation
154
Interface Property
IOrientedItem OrientationMatrix_x0
IOrientedItem OrientationMatrix_y1
IOrientedItem OrientationMatrix_y0
IOrientedItem OrientationMatrix_x2
IPaintedItem PaintingResponsibility
IPaintedItem PaintSpecifications_FinishCoat
IPaintedItem Paint_ApplicableSpecification
IPaintedItem PaintSpecifications_Interior
IPaintedItem PaintSpecifications_Exterior
IPaintedItem PaintSpecifications_MaterialName
IPaintedItem PaintByManufacturersStandard
IPaintedItem PaintSpecifications_SurfacePreparation
IPaintedItem PaintSpecifications_Primer
IPaintedItem PaintSpecifications_Grouting
IPaintedItem PaintSpecifications_Underside
IPaintedItem PaintSpecifications_Epoxy
IPart
IPartOcc CatalogPartNumber
IPartOcc CatalogName
IPBSItem ConstructionStatus
IPBSItem HeightRelativeToGrade
IPBSItem ConstructionStatus2
IPBSItemCollection
IPBSSystem
IPBSSystemParent
IPlannedMatl
IPlantItem PlantItem_MaterialClass
IPortComposition
IPressureDropItem PressureDrop_Dirty
IPressureDropItem PressureDrop
IPressureDropItem FrictionalPressureDrop
IPressureDropItem MomentumPressureDrop
IPressureDropItem PressureDropPercent
IPressureDropItem StaticPressureDrop
IPressureDropItem MaximumPressureDrop
IPressureDropItem MinimumPressureDrop
IPressureDropItem PressureDropLimit
IPressureRatedObject PressureRating
IPressureRatedObject PressureRating2
IProcessDataCaseComposition
IProcessEquipment ProcessEquipment_MountingIsPlanned
IProcessEquipment ProcessEquipment_PlannedOperatingFactor
IProcessEquipment ProcessEquipment_ApplicableStandard
IProcessEquipmentOcc
IProcessPlantEquipment ProcessPlantEquipment_Height
IProcessPlantEquipment ProcessPlantEquipment_DischargePressureRated
IProcessPlantEquipment ProcessPlantEquipment_StressRelieving
IProcessPointCollection
IProcessWettedItem FluidServiceCategory
IProcessWettedItem TemperatureRating
IProcessWettedItem CorrosionAllowance
IProcessWettedItem FluidServiceCategory2
IPump Pump_SealFlushPipingPlanDescription
155
Interface Property
IPumpOcc Pump_CoolingWaterPlan
IRequisitionedItem RequisitionType
IRequisitionedItem RequisitionResponsibility
IRotatingItem RotationDirection
IRotatingItem SynchronousSpeed
IRotatingItem AsynchronousSpeed
IRotatingItem AngularVelocity
IRotatingItem MaximumAngularVelocity
IRotatingItem NumberOfPoles
ISolidItem SurfaceArea
ISolidItem VolumetricCapacity
ISpecifiedMatlItem ShortMaterialDescription
ISpecifiedMatlItem Material_ThermalConductivity
ISpecifiedMatlItem LongMaterialDescription
ISpecifiedMatlItem LocalizedShortMaterialDescription
ISpecifiedMatlItem MaterialsGradePractice
ISpecifiedMatlItem MaterialsCategory
ISpecifiedMatlItem MaterialsGrade
ISpecifiedMatlItem Material_DampingCoefficient
ISpecifiedMatlItem Material_Density
ISpecifiedMatlItem Material_ElasticModulus
ISpecifiedMatlItem Material_Emissivity
ISpecifiedMatlItem Material_MaxCompression
ISpecifiedMatlItem Material_MaxShear
ISpecifiedMatlItem Material_MaxTension
ISpecifiedMatlItem Material_PoissonRatio
ISpecifiedMatlItem Material_ShearModulus
ISpecifiedMatlItem Material_SpecificHeat
ISpecifiedMatlItem Material_ThermalExpansionCoefficient
ISpecifiedMatlItem Material_UltimateStress
ISpecifiedMatlItem Material_YieldStress
ISteamedItem SteamOutPressure
ISteamedItem SteamoutReq
ISteamedItem SteamOutTemperature
ISuppliedItem HyperlinkToVendor
ISuppliedItem VendorPartNumber
ISuppliedItem Vendor
ISuppliedItem SupplyResponsibility
ISystemChild
ITestedItem TestingMinTemp
ITestedItem TestingMaxTemp
ITestedItem TestingResponsibility
ITestedItem TestingPercentage
ITestedItem TestingRequirements
ITestedItem TestingType
ITestedItem TestingMinPressure
ITestedItem TestingMaxPressure
ITypicalMatl
IWBSItem WBSItemType
IWBSItem WBSItemPurpose
IWBSItemCollection
IWeightItem Dry_Stripped_Weight
IWeightItem TestWeight
156
Interface Property
IWeightItem DesignWeight
IWeightItem Wet_Operating_Weight
IWeightItem Dry_Installed_Weight
157
Appendix G. Piping Component Type Hierarchy
Level 1 Level 2 Level 3
Bolted joint spacers Spacer ring
Jacket spacer
Jacket spacers
Jacket spacer group
Blind assembly
Flange isolation kit
Miscellaneous Isolating sleeve
Union nut
Vent stack cover
GBSET
Jack screw
Miscellaneous bolting
Nut
Washer
Bonnet shield
Accessories Fitting shield
Flange shield
Shields
Instrument shield
Piping specialty shield
Valve shield
Crimp ring
Tubing accessories
Tube strap
Valve assembly shield Valve and flange shield
BSVPK
Valve packing DSVPK
VPK
Chain
Valve-operator accessory Extension stem guide
Floor stand bracket
Branches Double long turn Tee
Double full-size tees Double Tee
Tee with double offset
Double olet-type branches XLET
Tee with double offset, reducing branch
Double reducing tees Tee with double offset, reducing run and branch
Tee with double offset, reducing runs
45 degree double Y
Double wyes
YD
Drip ring tees TDR
EOLLR
Elbolets
EPIPET
CPLH
Endolets
FOLHC
X
Full-size crosses
XBA
L90YB
Full-size laterals
LAT
Full-size tees Drop Tee
Long turn Tee
S90YB
Supply and return Tee
T
158
Level 1 Level 2 Level 3
TBA
Tee with offset
Test Tee
TFI
TSPLT
TSRV
TST
TUOB
TUOR
TWMSW
Full-size, sloped header tees T88
Increasing olet-type branches Expanded pipet
Increasing tees TRRR
LOL
Latrolets
LOLPIPET
RPADNR
Non-radial branch reinforcement
RWELDNR
Non-radial olet-type branches WOLNR
BOL
COL
FLGOL
FOL
IWOL
NOL
PIPET
SAD
Olet-type branches
SOL
SOLSS
SWOL
TLET
TOL
TOLSS
WOL
WOLSS
XRB
Reducing crosses
XRRB
L90YRB
Reducing laterals LRB
LRRB
S90YRB
Tee with offset, reducing branch
Tee with offset, reducing run and branch
Tee with offset, reducing runs
Reducing tees Tee, heat exchanger
Tee, reducing run (baseboard)
TRB
TRI
TRRB
Reducing true Y
Reducing wyes
Reducing wye
RPAD
Reinforcing pads
RPAD2
Reinforcing welds RWELD
159
Level 1 Level 2 Level 3
RWELD2
45 degree Y
Long turn Y
Wyes
WYE
Y
Direction-change 11.25 degree direction change E11
fitting 15 degree direction change E15
22.5 degree direction change E22
30 degree direction change E30
E45
E453D
E45L
E45LR
E45LT
45 degree direction change E45M1
E45M2
E45M3
E45S
E45ST
E45U
E903DT
45-90 degree direction change
E90LRT
5.625 degree direction change E5
60 degree direction change E60
88 degree direction change E88
90 degree elbow with inlet
90 degree elbow with side inlet
90 degree elbow with vent
90 degree elbow, close rough
90 degree elbow, drop
90 degree elbow, hanger
90 degree elbow, intermediate radius
E90
E903D
E90BU
E90L
E90LR
90 degree direction change
E90LT
E90M1
E90M2
E90M3
E90M4
E90M5
E90S
E90SR
E90ST
E90SW
E90TC
E90U
E90R
90 degree reducing direction change
E90RST
Double 90 degree direction change 90 degree double elbow
Less than 45 degree direction change E453DT
160
Level 1 Level 2 Level 3
E45LRT
180 degree return with cleanout
R180
R180CL
R180LR
Returns R180MD
R180OP
R180SR
R180UP
R180UPSO
Closure plate, external to jacket
Closure plates
Closure plate, internal to jacket
CAP
Cap with drain
CLOSSET
Ending fittings Fitting cleanout with plug
End-fitting
HDHEMI
HIFVPLU
PLUG
BALJDE90
Flexible ending fittings BALJE90
BALJST
Dry barrel type hydrant
FOACH
FOAMK
FOAT
Fire hydrant HYD3W
HYDIND
HYDMNOZ
HYDSFR
HYDUG
Fire and safety Hose reel
Hose accessory
HRST1
ME1
MELB
MFOAM
Monitors
MGUN
MN1
MREMO
Spray sprinkler
Sprinklers
SSP1
In-Line Fittings Adapters Adapter, drop (tubing)
Adapter, flush (tubing)
Adapter, hose (tubing)
Adapter, soil pipe (tubing)
Adapter, trap (tubing)
Adapter, tubing
ADPT01
ADPT02
ADPT03
ADPT04
ADPT05
ADPT06
161
Level 1 Level 2 Level 3
TLDMADPT
BDISC
BLPAD
Blinds BLSPO
FBLD
FUBLD
BUSH
Bushing, external
Bushing, flush
CPLR
Concentric diameter change INSR1
INSR2
REDC
REDCLT
SWGC
Concentric diameter increase INCRC
Couplings and connectors BOSSET
CLACB
CLAGLOK
Clamp, bell-joint
Clamp, Grayloc
Clamp, SPO-Lock
Clamp, Techlok
Clamp, Tri-Clamp
CLAVBAN
CLMP1
CONNP
Coupling with drain
Coupling with tube stop
Coupling, compression
Coupling, cross-over
Coupling, eccentric
Coupling, flanged adapter
Coupling, hanger
Coupling, repair
Coupling, transition
Coupling, Victaulic
CPL
CPL45E
CPLBAY
CPLCOM
CPLFJ
CPLFLE
CPLM1
CPLTAN
CPLVIPS
Dresser coupling
HC
HIFVCPL
SLV
SWBRTL
SWFFQCB
SWFFQCS
162
Level 1 Level 2 Level 3
SWQCPLB
SWQCSWOS
SWQCSWS
Tapping sleeve
Tapping sleeve, mechanical joint
WELBFL
REDE
Eccentric diameter change REDELT
SWGE
Expander flanges FEWN
CBFERR
Ferrules FERR
TCFERR
BALFL
FCP
FFIL
FLWN
FS
Flanges
FSJ
FSW
FTHD
FWN
INSFL
HIFADPT
High integrity flange adapters HIFADPTSPL
HIFADPTSTEP
HIFLBRING
High integrity flange load bearing rings HIFLBRINGSPL
HIFLBRINGSTEP
DBLHUB
GLBLHUB
GLHUB
Hubs
HUB
SPOLHUB
TLHUB
BLSPA
OPSPA
In-line spacers
SLSPA
TBSPA
FL
Lap joint flanges
FSSE
BNIP
Close nipple
Nipples
INLNIP
NIP
FOSO
FOSW
Orifice flanges
FOTHD
FOWN
Orifice Plates Orifice plate
Orifice spacers ORFSPA
Orifice spacers ORSPA
Plate flanges FPL
163
Level 1 Level 2 Level 3
FPLSE
FRFILR
FRINS
FRS
Reducing flanges
FRSW
FRTHD
FRWN
Reducing Plate flanges FRPL
Reducing Slip-on flanges FRSO
FSO
Slip-on flanges
FSOSE
AFCNOZ
AIRANOZ
FLSPNOZ
Spray nozzles
HFCNOZ
HOLCNOZ
VLFCNOZ
STBNDL
Stub ends
STBNDS
T1SPA
Tapered spacers
T2SPA
UN
UND
Unions UNHD
UNO
UNTL
Piping specialty Detonation flame arrester
FAEOLC
FAEOLCM
FAEOLR
FAICMET
FAICP
Arrestor Flame arrester with free vent
Flame arrester, horizontal
Flame arrester, vertical
Flame arrestor
Flame check, high pressure
Flame check, low pressure
Flame trap assembly
Blank disc
Blind flange
Blinds
Paddle blind
Spectacle blind
Sample cooler
Sample cooler, high pressure
Sample cooler, low pressure
Coolers Sampler, fixed volume liquid
Sampler, in-line
SLRMOB
SLRPNOB
Couplings
Exhaust heads Exhaust head
Expansion joint EJCLSH
164
Level 1 Level 2 Level 3
EJEPB
EJEXPR
EJFAB
EJGIM
EJINLPB
EJRECT
EJREFL
EJSLTY
EJTELS
EJTHKW
EJTOR
EJUNI
Expansion joint
Expansion joint, double end
Expansion joint, single end
Hinged expansion joint
Filter
Filter, equipment protection
Filter
Filter, instrument protection
Filter, multiplex liquid
Paddle spacer
In-line spacers Ring spacer
Solid spacer
Air chamber
Miscellaneous tubing specialties Bulkhead fitting
Venturi insert
Specialty 1
Other piping specialties
Specialty 2
Drum trap with bottom inlet
Drum trap, swivel
P-trap
Other traps P-trap with cleanout
P-trap with union joint
P-trap, suction line
Trap, upturn
Gas pulse trap
Hammer arrestor
Pressure attenuation devices Liquid pulse trap
Shock trap
Surge arrester
Acoustic filter
Acoustic pulse trap
In-line silencer
Silencers
Noise attenuator
Vent diffuser
Vent silencer
Specialty valves Motor operated valve
Steam trap Automatic differential condensate controller
Ball float liquid drainer
Ball float steam trap
Bellows steam trap
Controlled disc steam trap
Fixed temperature discharge trap
165
Level 1 Level 2 Level 3
Float and thermostatic steam trap
Float steam trap, free
Float trap, angle type
Float trap, horizontal
Float trap, vertical
Impulse steam trap
Integral seat disc trap
Inverted bucket steam trap
Open bucket steam trap
Orifice trap
Steam trap
Steam trap diffuser
Thermodynamic steam trap
Thermodynamic steam trap, high pressure
Thermostatic air vent
Thermostatic steam trap
Thermostatic steam trap, balanced pressure
Thermostatic steam trap, balanced pressure bellows
Thermostatic steam trap, balanced pressure wafer
Thermostatic steam trap, bimetallic
Thermostatic steam trap, liquid expansion
Thermostatic steam trap, simple bimetallic
Upright (open top) bucket steam trap
Angle block strainer
Barrel strainer
Basket strainer
Cone strainer
Core strainer
Double basket strainer
Duplex basket strainer
Flat face perforated strainer
Flat perforated strainer
Flat plate strainer
Inclined perforated strainer
Inverted cone strainer
Perforated cone strainer
Strainer Permanent line strainer
Sanitary strainer
Single basket strainer
Sludge shoe
Suction strainer or Suction diffuser
Sump strainer
T strainer
Tank suction strainer
Tee-type assembly angle pattern strainer
Tee-type assembly straight thru pattern strainer
Temporary cone strainer
Temporary strainer
Truncated cone strainer (perforated basket strainer)
Y strainer
Suction tees and ejectors Ejector
Injector
Mixing tee
166
Level 1 Level 2 Level 3
Mixing tee, high pressure static
Sparger
Double elbow swivel joint
LOARAFR
LOARBL
LOARF
LOARSCI
Swivel joint LOARSLS
LOARVRL
LOARWA
ROTUN
Single elbow swivel joint
Straight-thru swivel joint
Free vent with screen
Free vent without screen
Vents
FVENT
FVENTWE
Pressure/vacuum relief manhole cover
PSE Press/vac rupture disc P
Relief device
PSV Press/vac relief valve P
Temperature fusible plug or disc
Distance pieces DISTPC
Hose HOSE
Jacketed piping, variable length Plain piping with integral core and jacket
Straight section
Piping fixed-length PIPEFX
Piping variable-length PIPE
Tube TUBE
Valves 3-way generic body valve
3-way solenoid valve
3WRV1
BAL3W
CK3W
3-way valves
CKST3W
DIA3W
GLO3W
PLU3W
SLI3W
3-way valves flow-directional CKAR
4-way generic body valve
4-way solenoid valve
4WRV1
4-way valves BAL4W
CK4W
DIA4W
PLU4W
BAL5W
CK5W
DIA5W
5-way valves
GENB5W
PLU5W
SOL5W
6-way valves GENB6W
PLU6W
167
Level 1 Level 2 Level 3
SOL6W
7-way valves DIA7W
CKAL
Angle valve flow-directional
CKAST
2-way angle solenoid valve
Angle slurry valve, 90 Degree
BDA
Angle valves Generic body angle valve
GLOA
HOSA
TKDR
Angle valves, 45 Degree Angle slurry valve, 45 Degree
Lower cross
Lower tee
Lower tee / upper cross
Control/Throttling valves Upper cross / lower cross
Upper tee / lower cross
Upper tee / lower tee
Y-body
DIA2W
Left-hand tangential, reverse acting
Diverter valves Right-hand tangential, reverse acting
Upper cross, reverse acting
Upper tee, reverse acting
ALA
Fire and safety valves DEL
DRY
45 degrees
90 degrees
90 degrees, offset down
Kettle valves 90 degrees, offset left
90 degrees, offset right
Flanged 45 degrees
Flanged 90 degrees
Linear Flow Directional Valves BFYDF
BFYDFDE
BFYDFL
BFYDFS
BFYHP
BFYLP
BFYLUG
BFYLUGDE
BFYTE
BFYWF
BFYWFDE
BFYWFL
BFYWFS
BFYWFSFL
BFYWFSFS
BWV
CKBAL
CKBP
CKHL
168
Level 1 Level 2 Level 3
CKLR
CKLRY
CKPI
CKS
CKSPS
CKSR
CKSSP
CKST
CKTD
CKVL
CKWF
CKYST
FOOT
Linear Valves BALF
BALFLO
BALL
Ball valve, temperature blowdown automated
BALLP
BALR
BALSP
BDY
DIA
FLO
GAT
GATBL
GATCON
GATEX
GATF
GATPS
GATPSLI
GATR
GATRASYM
GATSLI
GATSP
GATWE
Generic body valve
GLO
Globe valve, bonnetless inclined
GLOR
GLOREC
GLOROT
GLOSP
GLOY
HOS
KNF
Multivane 1 damper/louver valve
Multivane 2 damper/louver valve
NEE
PIN
PLU
PLUPB
PLUSP
PLUVP
169
Level 1 Level 2 Level 3
Single vane damper/louver valve
SLI
Solenoid valve
Solenoid valve, proportional
Multi-port valves 6WRV1
Other instrument valves Valve with restriction orifice
Angle pressure relief valve
Balanced automatic pressure relief valve
BLOF
Conservation vent
CONVDIA
PCONVPAW
Pressure automated valve
Pressure control valve
Pressure safety valve
Pressure/vacuum relief valve
PSPILO
PSSPRO
Pressure valves
PVCONVEOL
PVCONVFA
PVCONVINL
PVCONVPAW
PVCONVPAWSL
PVCONVSL
Safety relief valve
Straight-through pressure relief valve
Tee type relief valve
Vacuum relief valve
VACVEOL
VACVSM
SAMHO
Sampling valves
SAMHOIF
Sanitary access valve/fitting assemblies Sanitary access valve/fitting assembly
FLBT
Free flow reverse current valve
Specialty valves Motor operated valve
SAFS
SAFSTAN
Tandem valves Tandem valve
10F flanged
Clamp cross
Clamp inlet
Flanged cross
Tank outlet valves
Flanged offset left
Flanged offset right
Tee offset left
Tee offset right
Temperature valves Temperature safety valve
170
Appendix H. Some UML Diagrams
171
Figures for Chapter 25, "UML Reading Practice for InterfaceDefs"
172
Figure 68 Interface Diagram 4
173
Figure 70 Interface Diagram 6
174
Figure 72 Interface Diagram 8
175
Figure 73 Interface Diagram 9
x
176
x
177
Appendix I. Equipment Property
Spreadsheets
This is a summary of the roles and properties that are exposed by
"IEquipment".
178
Category Interface Property
Insulation & Tracing IInsulatedItem InsulationSurfaceArea
Insulation & Tracing IInsulatedItem InsulationWeight
Insulation & Tracing IInsulatedItem InsulCompositeMatl
Insulation & Tracing IInsulatedItem InsulPurpose1
Insulation & Tracing IInsulatedItem InsulPurpose2
Insulation & Tracing IInsulatedItem InsulPurpose3
Insulation & Tracing IInsulatedItem InsulSpec
Insulation & Tracing IInsulatedItem InsulTemp
Insulation & Tracing IInsulatedItem InsulThickSrc
Insulation & Tracing IInsulatedItem TotalInsulThick
Insulation & Tracing IJacketedItem Jacket_AvgInsulDens
Insulation & Tracing IJacketedItem Jacket_CleaningResponsibility
Insulation & Tracing IJacketedItem Jacket_CleaningRqmt
Insulation & Tracing IJacketedItem Jacket_CoatingColor
Insulation & Tracing IJacketedItem Jacket_CoatingRequirement
Insulation & Tracing IJacketedItem Jacket_CoatingType
Insulation & Tracing IJacketedItem Jacket_CorrosionAllowance
Insulation & Tracing IJacketedItem Jacket_ExteriorSurfaceTreatment
Insulation & Tracing IJacketedItem Jacket_FlowDirection
Insulation & Tracing IJacketedItem Jacket_FluidSystem
Insulation & Tracing IJacketedItem Jacket_HeatTransferArea
Insulation & Tracing IJacketedItem Jacket_HeatTransferCoefficient
Insulation & Tracing IJacketedItem Jacket_InsulationSurfaceArea
Insulation & Tracing IJacketedItem Jacket_InsulationWeight
Insulation & Tracing IJacketedItem Jacket_InsulCompositeMatl
Insulation & Tracing IJacketedItem Jacket_InsulPurpose1
Insulation & Tracing IJacketedItem Jacket_InsulPurpose2
Insulation & Tracing IJacketedItem Jacket_InsulPurpose3
Insulation & Tracing IJacketedItem Jacket_InsulSpec
Insulation & Tracing IJacketedItem Jacket_InsulTemp
Insulation & Tracing IJacketedItem Jacket_InsulThickSrc
Insulation & Tracing IJacketedItem Jacket_InteriorSurfaceTreatment
Insulation & Tracing IJacketedItem Jacket_ItemTag
Insulation & Tracing IJacketedItem Jacket_ItemTagSequenceNumber
Insulation & Tracing IJacketedItem Jacket_ItemTagSuffix
Insulation & Tracing IJacketedItem Jacket_MaterialOfConstructionClass
Insulation & Tracing IJacketedItem Jacket_NominalDiameter
Insulation & Tracing IJacketedItem Jacket_OperatingFluidCode
Insulation & Tracing IJacketedItem Jacket_OperatingTemperature
Insulation & Tracing IJacketedItem Jacket_PipingMaterialsClass
Insulation & Tracing IJacketedItem Jacket_ScheduleOrThickness
Insulation & Tracing IJacketedItem Jacket_ScheduleThickness2
Insulation & Tracing IJacketedItem Jacket_SteamOutPressure
Insulation & Tracing IJacketedItem Jacket_SteamoutReq
Insulation & Tracing IJacketedItem Jacket_SteamoutTemperature
Insulation & Tracing IJacketedItem Jacket_TotalInsulThick
Insulation & Tracing IJacketedItem SteamJacketPressure
Material Management ISpecifiedMatlItem LocalizedShortMaterialDescription
Material Management ISpecifiedMatlItem LongMaterialDescription
Material Management ISpecifiedMatlItem Material_DampingCoefficient
179
Category Interface Property
Material Management ISpecifiedMatlItem Material_Density
Material Management ISpecifiedMatlItem Material_ElasticModulus
Material Management ISpecifiedMatlItem Material_Emissivity
Material Management ISpecifiedMatlItem Material_MaxCompression
Material Management ISpecifiedMatlItem Material_MaxShear
Material Management ISpecifiedMatlItem Material_MaxTension
Material Management ISpecifiedMatlItem Material_PoissonRatio
Material Management ISpecifiedMatlItem Material_ShearModulus
Material Management ISpecifiedMatlItem Material_SpecificHeat
Material Management ISpecifiedMatlItem Material_ThermalConductivity
Material Management ISpecifiedMatlItem Material_ThermalExpansionCoefficient
Material Management ISpecifiedMatlItem Material_UltimateStress
Material Management ISpecifiedMatlItem Material_YieldStress
Material Management ISpecifiedMatlItem MaterialsCategory
Material Management ISpecifiedMatlItem MaterialsGrade
Material Management ISpecifiedMatlItem MaterialsGradePractice
Material Management ISpecifiedMatlItem ShortMaterialDescription
MRO ILubricatedItem LubricationRequirement
Process & Environmental
Conditions IPressureDropItem FrictionalPressureDrop
Process & Environmental
Conditions IPressureDropItem MaximumPressureDrop
Process & Environmental
Conditions IPressureDropItem MinimumPressureDrop
Process & Environmental
Conditions IPressureDropItem MomentumPressureDrop
Process & Environmental
Conditions IPressureDropItem PressureDrop
Process & Environmental
Conditions IPressureDropItem PressureDrop_Dirty
Process & Environmental
Conditions IPressureDropItem PressureDropLimit
Process & Environmental
Conditions IPressureDropItem PressureDropPercent
Process & Environmental
Conditions IPressureDropItem StaticPressureDrop
Process & Environmental
Conditions IPressureRatedObject PressureRating
Process & Environmental
Conditions IPressureRatedObject PressureRating2
Process & Environmental
Conditions IProcessWettedItem CorrosionAllowance
Process & Environmental
Conditions IProcessWettedItem FluidServiceCategory
Process & Environmental
Conditions IProcessWettedItem FluidServiceCategory2
Process & Environmental
Conditions IProcessWettedItem TemperatureRating
Safety IExplosionProtected ExplosionProtection
Safety IHazardousAreaRated AutomaticIgnitionRequired
Safety IHazardousAreaRated AutomaticReIgnitionRequired
Safety IHazardousAreaRated BatteryBackupRequried
Safety IHazardousAreaRated FlameProofRequired
Safety IHazardousAreaRated GasGroup
Safety IHazardousAreaRated HazardousAreaClassification
Safety IHazardousAreaRated HazardousAreaTemperatureClass
Safety IHazardousAreaRated LocalAlarmRequired
180
Category Interface Property
Safety IHazardousAreaRated ManualIgnitionRequired
Safety IHazardousAreaRated PilotFailureDetectionRequired
Safety IHazardousAreaRated RechargeableRequired
Safety IHazardousAreaRated RemoteAlarmRequired
Safety IHazardousAreaRated VoltFreeContactsRequired
Safety IHazardousAreaRated WeatherProofRequired
Surface Treatment & Coatings ICoatedItem CoatingColor
Surface Treatment & Coatings ICoatedItem CoatingRequirement
Surface Treatment & Coatings ICoatedItem CoatingType
Surface Treatment & Coatings ICoatedItem ExteriorSurfaceTreatment
Surface Treatment & Coatings ICoatedItem InteriorSurfaceTreatment
Surface Treatment & Coatings IPaintedItem Paint_ApplicableSpecification
Surface Treatment & Coatings IPaintedItem PaintByManufacturersStandard
Surface Treatment & Coatings IPaintedItem PaintingResponsibility
Surface Treatment & Coatings IPaintedItem PaintSpecifications_Epoxy
Surface Treatment & Coatings IPaintedItem PaintSpecifications_Exterior
Surface Treatment & Coatings IPaintedItem PaintSpecifications_FinishCoat
Surface Treatment & Coatings IPaintedItem PaintSpecifications_Grouting
Surface Treatment & Coatings IPaintedItem PaintSpecifications_Interior
Surface Treatment & Coatings IPaintedItem PaintSpecifications_MaterialName
Surface Treatment & Coatings IPaintedItem PaintSpecifications_Primer
Surface Treatment & Coatings IPaintedItem PaintSpecifications_SurfacePreparation
Surface Treatment & Coatings IPaintedItem PaintSpecifications_Underside
Weight & COG ICOGItem Global_Design_CoG_X
Weight & COG ICOGItem Global_Design_CoG_Y
Weight & COG ICOGItem Global_Design_CoG_Z
Weight & COG ICOGItem Global_Dry_Installed_CoG_X
Weight & COG ICOGItem Global_Dry_Installed_CoG_Y
Weight & COG ICOGItem Global_Dry_Installed_CoG_Z
Weight & COG ICOGItem Global_Dry_Stripped_CoG_X
Weight & COG ICOGItem Global_Dry_Stripped_CoG_Y
Weight & COG ICOGItem Global_Dry_Stripped_CoG_Z
Weight & COG ICOGItem Global_Test_CoG_X
Weight & COG ICOGItem Global_Test_CoG_Y
Weight & COG ICOGItem Global_Test_CoG_Z
Weight & COG ICOGItem Global_Wet_Operating_CoG_X
Weight & COG ICOGItem Global_Wet_Operating_CoG_Y
Weight & COG ICOGItem Global_Wet_Operating_CoG_Z
Weight & COG ICOGItem Local_Design_CoG_X
Weight & COG ICOGItem Local_Design_CoG_Y
Weight & COG ICOGItem Local_Design_CoG_Z
Weight & COG ICOGItem Local_Dry_Installed_CoG_X
Weight & COG ICOGItem Local_Dry_Installed_CoG_Y
Weight & COG ICOGItem Local_Dry_Installed_CoG_Z
Weight & COG ICOGItem Local_Dry_Stripped_CoG_X
Weight & COG ICOGItem Local_Dry_Stripped_CoG_Y
Weight & COG ICOGItem Local_Dry_Stripped_CoG_Z
Weight & COG ICOGItem Local_Test_CoG_X
Weight & COG ICOGItem Local_Test_CoG_Y
Weight & COG ICOGItem Local_Test_CoG_Z
181
Category Interface Property
Weight & COG ICOGItem Local_Wet_Operating_CoG_X
Weight & COG ICOGItem Local_Wet_Operating_CoG_Y
Weight & COG ICOGItem Local_Wet_Operating_CoG_Z
Weight & COG ISolidItem SurfaceArea
Weight & COG ISolidItem VolumetricCapacity
Weight & COG IWeightItem DesignWeight
Weight & COG IWeightItem Dry_Installed_Weight
Weight & COG IWeightItem Dry_Stripped_Weight
Weight & COG IWeightItem TestWeight
Weight & COG IWeightItem Wet_Operating_Weight
182
Category Interface Property
Manufacturing, Fabrication, Construction IConstructedItem ConstructionRequirement
Manufacturing, Fabrication, Construction IConstructedItem ConstructionType
Manufacturing, Fabrication, Construction IFabricatedItem FabricatedWeight
Manufacturing, Fabrication, Construction IFabricatedItem FabricationRequirement
Manufacturing, Fabrication, Construction IFabricatedItem FabricationResponsibility
Manufacturing, Fabrication, Construction IFabricatedItem FabricationType
Manufacturing, Fabrication, Construction IFabricatedItem FabricationTypeBasis
Manufacturing, Fabrication, Construction IFabricatedItem FabricatorName
Manufacturing, Fabrication, Construction IInstalledItem InstallationResponsibility
Manufacturing, Fabrication, Construction IManufacturedItem Manufacturer
Manufacturing, Fabrication, Construction IManufacturedItem ManufacturerIndustryPractice
Manufacturing, Fabrication, Construction IManufacturedItem ManufacturerModelNumber
Manufacturing, Fabrication, Construction IManufacturedItem ManufacturerName
Manufacturing, Fabrication, Construction IRequisitionedItem RequisitionResponsibility
Manufacturing, Fabrication, Construction IRequisitionedItem RequisitionType
Manufacturing, Fabrication, Construction ISuppliedItem HyperlinkToVendor
Manufacturing, Fabrication, Construction ISuppliedItem SupplyResponsibility
Manufacturing, Fabrication, Construction ISuppliedItem Vendor
Manufacturing, Fabrication, Construction ISuppliedItem VendorPartNumber
Manufacturing, Fabrication, Construction IWBSItem WBSItemPurpose
Manufacturing, Fabrication, Construction IWBSItem WBSItemType
Miscellaneous IDesignedItem Design_FluidState
Miscellaneous IDesignedItem Design_MassFlowRate
Miscellaneous IDesignedItem Design_MetalTemperature
Miscellaneous IDesignedItem Design_Pressure
Miscellaneous IDesignedItem Design_Pressure2
Miscellaneous IDesignedItem Design_ShortTermDuration
Miscellaneous IDesignedItem Design_ShortTermPressure
Miscellaneous IDesignedItem Design_ShortTermTemperature
Miscellaneous IDesignedItem Design_SpecificGravityMassBasis
Miscellaneous IDesignedItem Design_SteamOutPressure
Miscellaneous IDesignedItem Design_SteamOutRequired
Miscellaneous IDesignedItem Design_SteamOutTemperature
Miscellaneous IDesignedItem Design_Temperature
Miscellaneous IDesignedItem Design_Temperature2
Miscellaneous IDesignedItem Design_VacuumPressure
Miscellaneous IDesignedItem Design_VacuumTemperature
Miscellaneous IDesignedItem Design_VaporPressure
Miscellaneous IDesignedItem Design_VentingTemperature
Miscellaneous IDesignedItem Design_Viscosity
Miscellaneous IDesignedItem DesignApprovalRequired
Miscellaneous IDesignedItem DesignResponsibility
Miscellaneous IDesignedItem ElectricalEquipmentDesignType
Miscellaneous IExpandableThing ExpansionCount
Miscellaneous IMountedItem MountingLocation
Miscellaneous IMountedItem MountingOrientation
Miscellaneous IMTOInfo MTO_ReportingRequirements
Miscellaneous IMTOInfo MTO_ReportingType
Miscellaneous IPartOcc CatalogName
Miscellaneous IPartOcc CatalogPartNumber
Process & Environmental Conditions IAltDgnPoint AltDesignPressMax
183
Category Interface Property
Process & Environmental Conditions IAltDgnPoint AltDesignPressMin
Process & Environmental Conditions IAltDgnPoint AltDesignTempMax
Process & Environmental Conditions IAltDgnPoint AltDesignTempMin
Process & Environmental Conditions IAltDgnPoint DesignCriteriaPressure2
Process & Environmental Conditions IAltDgnPoint DesignCriteriaTemperature2
Process & Environmental Conditions INormalDgnPoint DesignCriteriaFluidState
Process & Environmental Conditions INormalDgnPoint DesignCriteriaMassFlowRate
Process & Environmental Conditions INormalDgnPoint DesignCriteriaMetalTemperature
Process & Environmental Conditions INormalDgnPoint DesignCriteriaPower
Process & Environmental Conditions INormalDgnPoint DesignCriteriaPressure
Process & Environmental Conditions INormalDgnPoint DesignCriteriaShortTermDuration
Process & Environmental Conditions INormalDgnPoint DesignCriteriaShortTermPressure
Process & Environmental Conditions INormalDgnPoint DesignCriteriaShortTermTemperature
Process & Environmental Conditions INormalDgnPoint DesignCriteriaSpecificGravityMassBasis
Process & Environmental Conditions INormalDgnPoint DesignCriteriaSpeed
Process & Environmental Conditions INormalDgnPoint DesignCriteriaSteamOutPressure
Process & Environmental Conditions INormalDgnPoint DesignCriteriaSteamOutRequirement
Process & Environmental Conditions INormalDgnPoint DesignCriteriaSteamOutTemperature
Process & Environmental Conditions INormalDgnPoint DesignCriteriaTemperature
Process & Environmental Conditions INormalDgnPoint DesignCriteriaVacuumPressure
Process & Environmental Conditions INormalDgnPoint DesignCriteriaVacuumTemperature
Process & Environmental Conditions INormalDgnPoint DesignCriteriaVapourPressure
Process & Environmental Conditions INormalDgnPoint DesignCriteriaVentingTemperature
Process & Environmental Conditions INormalDgnPoint DesignCriteriaViscosity
Process & Environmental Conditions INormalDgnPoint NormDesignPressMax
Process & Environmental Conditions INormalDgnPoint NormDesignPressMin
Process & Environmental Conditions INormalDgnPoint NormDesignTempMax
Process & Environmental Conditions INormalDgnPoint NormDesignTempMin
Startup Treatment ICleanedItem CleaningResponsibility
Startup Treatment ICleanedItem CleaningRqmt
Startup Treatment ISteamedItem SteamOutPressure
Startup Treatment ISteamedItem SteamoutReq
Startup Treatment ISteamedItem SteamOutTemperature
State & Status IHeldItem Hold_ClosedBy
State & Status IHeldItem Hold_ClosedDate
State & Status IHeldItem Hold_CreatedBy
State & Status IHeldItem Hold_CreatedDate
State & Status IHeldItem Hold_Name
State & Status IHeldItem Hold_Number
State & Status IHeldItem HoldRemarks
State & Status IHeldItem HoldStatus
Testing ITestedItem TestingMaxPressure
Testing ITestedItem TestingMaxTemp
Testing ITestedItem TestingMinPressure
Testing ITestedItem TestingMinTemp
Testing ITestedItem TestingPercentage
Testing ITestedItem TestingRequirements
Testing ITestedItem TestingResponsibility
Testing ITestedItem TestingType
IPlantItem PlantItem_MaterialClass
IProcessPlantEquipment ProcessPlantEquipment_DischargePressureRated
184
Category Interface Property
IProcessPlantEquipment ProcessPlantEquipment_Height
IProcessPlantEquipment ProcessPlantEquipment_StressRelieving
185
Appendix J. SmartPlant Meta-Schema
Objects
At the heart of the SmartPlant schema are the object definitions that make
everything run. Behind each of these structures is a smart bit of code that
behaves in a very specific way. Some of them are useful, and some of them
are not used at all. They are grouped as follows:
Architecture objects
Action
Actor
PersistentDataStore
SoftwareComponent
UseCase
UseCaseEntity
Schema objects
Book EmbeddedGraphRelDef RecursiveRelDef
BooleanType EnumEnum Rel
ClassDef EnumListLevelType RelDef
ClassDefViewDefsType EnumListType RelDefConstraint
ClassFactoryDef GraphDefType SharedObjDef
ClassList InterfaceDef SpecialRelDef
ClassViewMap InterfaceDefConstraint StringType
CompositeStringType IntersectRelDef Topic
CompSchema IntType TransformDef
DateTimeType LinkedListType UMLViewDef
DirectedGraphDef ModelDef UoMEnum
DirectoryFileType NamedQuery UoMListType
DiscreteUoM ObjectsType URLType
DiscreteUoMListType Package UserForm
DocumentTemplate PathDefType ViewDef
DoubleArrayType PropComparisonsType ViewDefCategory
DoubleType PropertyDef ViewPropsDefType
EdgeDef PropValsType YMDType
Software objects
PlannedMethod
SoftwareArgument
SoftwareClass
SoftwareControl
SoftwareEnum
186
SoftwareEnumList
SoftwareFactory
SoftwareInterface
SoftwareMethod
SoftwareProperty
TypeLibEF
Tool objects
Tool
ToolSchema
ToolSchemaFile
187
Appendix K. SmartPlant Schema Rationale
The Guru lowers his voice and says: "There are some real great reasons to
take this stuff seriously -- the most important of which is that it affects
your profitability."
Many engineering tools already have complex data models and databases in
place designed specifically to meet the needs of their particular problem
area. However, when it comes to exchanging data between applications, then
there is a need to translate and map the data from one application into the
language of the other application. This is typically a non-trivial task requiring
domain experts from each application to work together to achieve, when
compounded by trying to integrate multiple applications then the task can
become overwhelming. In addition, given that each application is continually
evolving, then no sooner is one integration point complete when it needs to
be revisited after an upgrade. There are even ANSI and ISO standards, in
various states of completeness, that might be considered as a basis for this
type of engineering work. Most of them have been trying to get kick-
started for 20 or more years. It's not that the problem hasn't been
characterized to death; it's that committees are not famous for dishing up
real-world solutions in any reasonable timeframe.
188
Appendix L. The TEST
The TEST - Please Read Carefully Before You Start. Open-book, of course!
189
Index
Abstract, 7, 53, 70 design intent, 89
abstracting classes, 70 DirectedGraphDef, 60, 64, 65
ACID principle, 59 Discrimination, 61
Atomic, 59 Document, 8
Consistent, 59 PBS hierarchy, 98
Durable, 59 ProjectList, 98
Isolated, 59
Edge, 60
Actual, 91, 94
Edge definition, 60, 61, 64, 65
Actual material, 94
Adapter, v, 8, 23, 58, 83, 138 EdgeDef, 60, 61, 62, 63, 64, 138
Discrimination, or "filtering", 61
Agitator, 110
NumericPosition, 63
API, vi, 8 path definition, 61
Architectural Model, 100 Position criteria, 61
Cardinality, 55, 138 PropComparisons, 64
many, 55
maximum, 73 EnumEnum, 34, 35, 37, 40, 74,
minimum, 73 120, 130, 138
Catalog, 90 long text, 36
Class, 24, 25, 31, 67, 69, 71, 72, 73, 85, short text, 36
88, 138 Enumerated lists, 7
Abstracting, 70 EnumListLevelType, 36, 120, 121
Class diagram, 24 EnumListType, 35, 36, 37, 40, 74, 120,
131, 138
Class factory, 75
open-ended, 35
ClassDef, 24, 31, 48, 51, 66, 67, 74, 75, EnumMetadata, 38
76, 78, 81, 85, 114, 129, 138 Exposes, 24, 27, 85
Naming, 117
Sharing, 32 Extensible Markup Language, 83
ClassViewMap, 66 Facility model, 89
Collection, 99 Functionally Significant Item, 89
Component Schema, v, 23, 75, 78, 81, Graph definition, 60, 64, 65
103, 138 GraphDef, 138
Composition, 99 Hierarchy, 139
CompSchema, 78 leaf-node, 119
ConditionList, 42 Implies, 44, 85, 92, 139
Connectivity, 7 Inheritance, 47
Conversion, 40 Instance, 31, 48, 53, 55, 69, 73, 139
dangling relationship, 58 Interface, 2, 13, 17, 18, 19, 21, 22, 24,
delete propagation, 97 25, 52, 67, 68, 69, 71, 72, 73, 85, 86,
Denormalization, 17 87, 88, 139
Review, 25
190
interface definition, 64 object type-ness, 39
Interface diagram, 24 part-ness, 139
red-ness, 27
InterfaceDef, 24, 25, 26, 27, 31, 44, role-ness, 49
45, 48, 52, 55, 61, 64, 65, 69, 74, 75, sloped-ness, 95
85, 112, 113, 114, 120, 132, 139 tank-ness, 14
EnumMetadata, 38 taxpayer-ness, 19
Names begin with the letter "I", 18, thing-ness, 14
30, 75 type-ness, 90, 110
IObject, 31 valve-ness, 14, 15, 27, 49
IPart, 90 valve-part-ness, 91
IPipingComponent, 120 valve-type-ness, 89
IRotatingItem, 113, 114 woman-ness, 20
join, 65 Normalization, 16, 17, 125, 150
3NF, 16, 17, 125
Link attributes, 73 4NF, 16, 17, 125
Linnaean taxonomic model, 10, 11, 12, 5NF, 16, 17, 114, 125
18, 44, 46, 116, 118, 126, 127, 139 data, 16, 25, 94, 112, 114, 125
Loose integration, iv
Normalize, 27
Map files, 8 Object, v, 2, 3, 7, 10, 11, 13, 16, 18, 19,
Mapping, 139 24, 25, 31, 52, 53, 67, 68, 69, 70, 73,
Meta Schema, 74, 75, 76, 77, 75, 81, 85, 86, 87, 88, 98, 139
139, 186 Occurrence, 89, 91, 92
Model, 4, 5, 7, 11, 12, 21, 24, 32, 67, 72, Equipment-as-an-occurrence, 95, 96
75, 85, 100, 112, 126 Valve-as-an-occurrence, 91, 92
Architectural, 100 Ordinal numbers, 45
class-based, 68 Ordinality, 45, 139
Conceptual, 6 Orthogonal, 19, 139
data, iv, v, vii, 2, 4, 7, 8, 9, 17, 19, 21, Part, 89, 90, 91, 92, 125
22, 24, 25, 48, 68, 70, 72, 73, 77,
catalog, 90
85, 86, 91, 100
Equipment-as-a-part, 94, 95, 96
P&ID data, 86
Valve-as-a-part, 91, 92
POSC Facility model, 100
POSC Material model, 100, 101 PipingComponentTypes1, 170
ModelDef, 32 Planned material, 33, 94, 101, 103,
Modeling, 2, 3, 4, 17, 21, 22, 67, 68, 69, 113
70, 73, 74, 77, 112 Plant breakdown structure (PBS), 81, 98,
data, 5 139
-ness suffix, 14, 27 Polymorphism, 11, 12, 17, 39, 69, 114
bicycle-ness, 49 POSC Caesar, 32, 90, 100
car-ness, 14, 27 Primary Interface, 49, 75, 99, 103,
dog-ness, 49 139
driver-ness, 18, 19
project, 65
Elliot Ness-ness, 14
Project, 139
human-ness, 20
man-ness, 20 Property, 14, 15, 25, 27
191
PropertyDef, 27, 28, 36, 42, 74, Semantics, v, 8, 52, 54, 93, 125, 140
Delete and Copy, 52
114, 133
Delete Propagation, 54
Typed as a Unit of Measure, 42
semantic meaning, 93
Publish, 7, 8, 25, 31, 34, 35, 52, 55, 69, semantic network, 10
78, 81, 83, 86, 117, 140 strong semantics, 34, 93
pump, 112, 113, 142, 150 shared object, 97
Realize, 12, 14, 17, 24, 45, 48, 51, 67, Shared object, 32, 58, 66, 82, 140
69, 71, 72, 73, 75, 85, 88, 92, 140
SharedObjDef, 32, 33
Rel, 52, 53, 55, 88, 140
SI-unit, 40, 41, 42, 140
Relationship, v, 7, 8, 10, 14, 18, 19, 20,
22, 24, 25, 26, 32, 42, 44, 47, 48, 50, SmartPlant Integration, iv
52, 53, 55, 68, 69, 72, 73, 77, 85, 86, SmartPlant Enterprise, 1, 6, 8, 141
87, 88, 92, 101, 113, 125, 139, 140 enabled tools, 7
Inheritance, 47 SmartPlant Foundation, iv, vi, 3, 7, 9,
transitive, 45 19, 23, 55, 138, 140, 141
Relationships data, 17
Collection, 97 data model, iv, 19, 23, 25
Composition, 97 SmartPlant Integration, 141
RelDef, 24, 50, 52, 53, 55, 56, 63, 64, SmartPlant schema, v, 1, 7, 8, 17, 21, 23,
72, 73, 74, 85, 134, 135, 140 24, 25, 30, 31, 32, 42, 48, 49, 53, 60,
Abstract, 52, 53 63, 67, 69, 74, 76, 77, 83, 84, 85, 86,
Concrete, 52 87, 88, 100, 102, 112, 113, 119, 138,
locality of reference, 56, 57 139, 140, 141
Marriage, 50, 51 Editor, 77, 81
Patterns, 97 File, 77
Retrieve, 7, 8, 17, 31, 34, 35, 69, 83, SmartPlant Schema Editor, vi, 24,
140 75, 76, 103
Role, 4, 13, 14, 15, 16, 17, 18, 19, 20, SmartPlant Tools
21, 25, 44, 47, 48, 50, 52, 56, 67, 68, SmartPlant 3D, 6
69, 70, 72, 73, 87, 92, 112, 113, 114, SmartPlant Electrical, 6
139 SmartPlant Explorer, 6
Role-based, 13, 18, 67, 69, 70 SmartPlant Foundation, 6
SameAs, 32 SmartPlant Instrumentation, 6
Schema, iv, 1, 16, 24, 31, 70, 75, 76, 77, SmartPlant Layout, 6
78, 83, 85, 86, 102, 129, 140, 141 SmartPlant Markup, 6
component, 99 SmartPlant Offshore, 6
Evolution, 8, 102 SmartPlant P&ID, 6
Tool, 8, 141 SmartPlant Process Safety, 6
Schema Component, 23, 140 SmartPlant Review, 6
Scoping SmartPlant Review Publisher, 6
PropertyDef, 27, 28, 29, 121 SmartSketch®, 7
ScopedBy, 140 SPF, iv, v, vi, 3, 8, 23, 59, 61, 66, 83
scoping property type for property Adapter, v
definitions, 37 data model, v
192
Data model, 19 UML, 21, 110
database, 7 Extending, 26
Publish, 55 Unified Modeling Language (UML), 21,
SameAs, 32 22, 24, 26, 67, 73, 77, 141
St. Ives, 111 Unique ID (UID), 27, 31, 52, 59, 75, 88
Stereotype, 26, 31, 35, 42, 44 Units of Measure, 7, 40
HasDefaultSI, 42 AnyUoM, 42
Symbolic logic, 20, 21, 22 Conditions, 42
Tagged item, 89, 91, 101, 103 absolute, 42
Taxonomy, 10, 12, 18, 68, 126 gauge, 42
TEF, 141 UoMEnum, 40, 136
tombstone, 97 UoMListType, 40, 137
Tool, iv, 5, 6, 7, 8, 19, 31, 76, 77, 78, Valve, 2, 3, 5, 6, 7, 11, 12, 13, 14, 15,
138 17, 48, 89, 91, 101
Authoring, 8 View, 5, 60
Transitive, 45 view definition, 64, 65, 66
Type hierarchy, 90, 91 ViewDef, 60, 64, 65, 66, 141
Typical, 91 Work breakdown structure (WBS), 81,
Typical material, 90, 91 98, 141
UID, 82 XML, 23, 77, 83, 84, 86, 88, 141
193