Open Geospatial Consortium

Submission Date: 2019-03-05

Approval Date:   2019-06-25

Publication Date:   2019-08-07

External identifier of this OGC® document: http://www.opengis.net/doc/is/pipelineml/1.0

Internal reference number of this OGC® document:    18-073r2

Version: 1.0

Category: OGC® Implementation Standard

Editor:   John Tisdale

OGC PipelineML Conceptual and Encoding Model Standard

Copyright notice

Copyright © 2019 Open Geospatial Consortium

To obtain additional rights of use, visit http://www.opengeospatial.org/legal/

Warning

This document is an OGC Member approved international standard. This document is available on a royalty free, non-discriminatory basis.

Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.

Document type:    OGC® Standard

Document subtype:    PipelineML Tech Spec

Document stage:    Approved for public release

Document language:  English

License Agreement

Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.

If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.

THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD.

THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.

This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.

Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.

Table of Contents

i. Abstract

The OGC PipelineML Conceptual and Encoding Model Standard defines concepts supporting the interoperable interchange of data pertaining to oil and gas pipeline systems. PipelineML supports the common exchange of oil and gas pipeline information. This initial release of the PipelineML Core addresses two critical business use cases that are specific to the pipeline industry: new construction surveys and pipeline rehabilitation. This standard defines the individual pipeline components with support for lightweight aggregation. Additional aggregation requirements such as right-of-way and land management will utilize the OGC LandInfra standards with utility extensions in the future. Future extensions to PipelineML Core will include (non-limitative): cathodic protection, facility and safety. PipelineML was advanced by an international team of contributors from the US, Canada, Belgium, Norway, Netherlands, UK, Germany, Australia, Brazil, and Korea.

This standard assumes the reader has a basic understanding of oil and gas pipeline industry concepts.

ii. Keywords

The following are keywords to be used by search engines and document catalogues.

ogcdoc, OGC document, gml, PipelineML, pml, pipeline, oil and gas, energy, utility, underground, components

iii. Preface

This document is a deliverable of the Open Geospatial Consortium (OGC) PipelineML Standards Working Group (SWG).

Version 1.0 of the PipelineML standard defined in this document solely focuses on addressing two critical business use cases within this grouping of component use cases: new construction as-built survey, and component rehabilitation surveys. This specification defines a minimal requirement for component groupings or aggregation.

The early work of the PipelineML SWG focused on defining pipeline industry use cases. We concluded these diverse set of use cases fall into three broad groups, as illustrated in the diagram below, starting with the highest level of aggregation and working toward increased specificity and granularity. The most common group of use cases are concerned with pipeline centerline or right of way. This includes such use cases as right of way management, foreign line crossings, regulatory reporting, land division, emergency response, high consequences areas (HCA) management, public awareness, and one call (call before you dig). We concluded these use cases should leverage the collaborative work of the LandInfra DWG and SWG. We expect this pending work will involve a utility-based update/extension to LandInfra that will service of the centerline/right of way needs of the pipeline industry.

image
Figure 1. Use Case Grouping Levels

The second group of use cases is specific to the pipeline industry as they pertain to the management of individual pipeline component attributes required to assess and mitigate the risks of running highly volatile product through underground systems under high pressure. This includes such use cases as new construction as-built surveys, component rehabilitation surveys, component data management, and risk assessments.

The third group of use cases identify anomalies located on an individual pipeline component (subcomponent attributes). This includes such use cases as inline inspection (ILI) tool runs and remediation prioritization. These use cases shall be resolved at some point in the future as part of a modularized application schema of PipelineML that are specific to the pipeline industry.

Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.

iv. Security considerations

No security considerations have been made for this standard.

v. Submitting organizations

The following organizations submitted this Document to the Open Geospatial Consortium (OGC):

  • Enterprise Products LLP, Houston, Texas, United States of America

  • Merkator NV/SA, Brussels, Belgium

  • Enghouse Systems Ltd, Ontario, Canada

  • BSD Consulting, Inc., Houston, Texas, United States of America

vi. Scope limitation

The current version of PipelineML only considers pipeline transportation (midstream) for oil and natural gas. The pipeline and componentry attribution is focused on overland transport, not on overseas transport.

The descriptions in PML are limited to componentry that is part of a pipeline system or appurtenances directly attached to it. Safety equipment, cathodic protection and other appurtenances are not included in this version of the standard.

Componentry that is most frequently used in installations (such as gas stations) is not fully supported yet.

The current PML description is focused on the physical and material attributes of pipeline systems. Any operational attributes such as operation date, operational state or actual pressure or material are excluded.

vii. Submitters

All questions regarding this submission should be directed to the editor or the submitters:

Name

Affiliation

John Tisdale

Enterprise Products LLP

Jan Stuckens

Merkator NV/SA

1. Scope

This OGC Standard defines a conceptual model and GML encoding rules pertaining to the data interchange needs of the oil and gas pipeline industry. Efforts have been made to minimize the footprint of this standard to avoid overlap with other standards pertaining to utility infrastructure. PipelineML specifies a single, modular, extensible application schema focused on defining pipeline components and their attributes with limited grouping or aggregation features.

2. Conformance

This standard defines concepts for oil and gas pipeline systems. This includes a conceptual model and an XML encoding which conform to the OGC GML encoding rules. Requirements for three standardization target types are considered:

  • Conceptual Model

  • Encoding

  • Data Instance

This version of the Standard supports an XML encoding that is GML-compliant. Future versions of the standard may support additional encodings such as JSON/GeoJSON, but such extensions are not envisaged in the current version.

Conformance with this standard shall be checked using all the relevant tests specified in Annex A (normative) of this document. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site [1].

In order to conform to this OGC™ interface standard, a software implementation SHALL implement all requirements-classes and conformance-classes described in this document.

3. References

The following normative documents contain provisions that, through reference in this text, constitute provisions of this document. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.

  • ISO: ISO 19101-1:2014, Geographic information — Reference model — Part 1: Fundamentals, International Organization for Standardization (2005)

  • ISO: ISO 19103:2005, Geographic information — Conceptual Schema Language, International Organization for Standardization (2005)

  • ISO: ISO 19107:2003, Geographic information — Spatial Schema, International Organization for Standardization (2003)

  • ISO: ISO 19109:2015, Geographic information — Rules for application schema, International Organization for Standardization (2015)

  • OGC: OGC 18-005r4, OGC Abstract Specification Topic 2: Referencing by coordinates, ISO 19111:2019, Open Geospatial Consortium (2019)

  • ISO: ISO 19115:2014, Geographic information — Metadata_, OGC Abstract Specification Topic 11: Metadata_, Open Geospatial Consortium (2014)

  • OGC: OGC 07-036r1, OpenGIS® Geography Markup Language (GML) Encoding Standard, Open Geospatial Consortium (2016)

  • IETF: RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, Internet Engineering Task Force (2005)

  • OMG: Unified Modeling Language (UML). Version 2.3, Object Management Group (2010)

  • W3C: Extensible Markup Language (XML) - Version 1.0 (Fourth Edition), World Wide Web Consortium (2006)

  • W3C: XML Schema - Version 1.0 (Second Edition), World Wide Web Consortium (2004)

4. Terms and definitions

This document uses the terms defined in Sub-clause 5.3 of [OGC06-121r9], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.

For the purposes of this document, the following additional terms and definitions apply.

4.1. appurtenant component

A pipeline component that is applied to a coterminous component, such as a coating, casing, or sleeve.

4.2. assembly

A set of functionally related components physically attached to each other that collectively support one or more functions as part of a pressurized pipeline system.

(ISO 6707-1:2014)

4.3. classifier

A classifier is an abstract UML metaclass which describes (classifies) a set of instances having common features (not to be confused with the “Feature” stereotype from the OGC Feature Model). A feature declares a structural or behavioral characteristic of instances of classifiers. (http://www.uml-diagrams.org/classifier.html). Classes, Interfaces, Association, and Types are kinds of classifiers.

4.4. component

A physical pipeline component that is or was part of a pipeline system constructed to be pressurized.

4.5. conceptual model

A model that defines concepts of a universe of discourse.

(ISO 19103, 4.11, 4.23)

4.6. conformance class

A set of conformance test modules that must be applied to receive a single certificate of conformance.

(OGC 08-131r3)

4.7. connector

The connection of two components together such that they function cohesively together as members of a pressurized pipeline system. Connectors can be physical (welded joint) or abstract (connection that are known to exist but the exact components that are connected is not known). In case of a flange, the physical flanges are coterminous components, while the connection made by the two flanges is a connector. Connectors describe the connectivity between coterminous components. Connectors do not add length (of any significance) to the pipeline, whereas components do. For example, a weld does not add length to a pipeline, whereas a flange does.

4.8. coterminous component

A physical pipeline component that is connected (welded, threaded, or bolted) into a series of connected components that collectively comprise a pressurized pipeline system. Coterminous components add physical length to pipelines whereas connectors and appurtenances do not.

4.9. dataset

An identifiable collection of data.

(ISO 19115)

4.10. domain feature

Feature of a type defined within a particular application domain.

Note
This may be contrasted with observations and sampling features, which are features of types defined for cross-domain purposes.

(ISO 19156, definition 4.4)

4.11. element <XML>

Basic information item of an XML document containing child elements, attributes and character data.

Note
From the XML Information Set ― each XML document contains one or more elements, the boundaries of which are either delimited by start-tags and end-tags, or, for empty elements, by an empty-element tag. Each element has a type, identified by name, sometimes called its ‘generic identifier’ (GI), and may have a set of attribute specifications. Each attribute specification has a name and a value.

(ISO 19136:2007)

4.12. feature

An abstraction of a real-world phenomenon.

(ISO 19101:2002, definition 4.11)

4.13. GML application schema

Application schema written in XML Schema in accordance with the rules specified in OGC GML 3.3.

(ISO 19136:2007)

4.14. GML document

XML document with a root element that is one of the elements AbstractFeature, Dictionary or TopoComplex, specified in the GML schema or any element of a substitution group of any of these elements.

(ISO 19136:2007)

4.15. GML schema

Schema components in the XML namespace ― as specified in OGC GML 3.3.

(ISO 19136:2007)

4.16. measurement

Set of operations having the objective of determining the value of a quantity.

(ISO/TS 19101-2:2008, definition 4.20)

4.17. observation

Act of observing a property.

NOTE: The goal of an observation may be to measure or otherwise determine the value of a property.

(ISO 19156:2011 definition 4.10)

4.18. observation procedure

Method, algorithm or instrument, or system which may be used in making an observation.

(ISO19156, definition 4.11)

4.19. observation result

Estimate of the value of a property determined through a known procedure.

(ISO 19156:2011)

4.20. pipeline

A continuous connected set of components, including ancillary components, used for transporting liquids or gases as part of a pressurized system.

(ISO 6707-1:2014)

4.21. property <General Feature Model>

Facet or attribute of an object referenced by a name.

EXAMPLE: Abby’s car has the color red, where “color red” is a property of the car instance.

4.22. sampled feature

The real-world domain feature of interest, such as a geological unit or structure which is observed.

(ISO 19156:2011)

4.23. sampling feature

Feature, such as a station, outcrop, borehole, section or specimen, which is involved in making observations of a domain feature.

Note
A sampling feature is purely an artifact of the observational strategy, and has no significance independent of the observational campaign.

(ISO 19156:2011, definition 4.16)

4.24. schema <XML Schema>

XML document containing a collection of schema component definitions and declarations within the same target namespace.

Example Schema components of W3C XML Schema are types, elements, attributes, groups, etc.

Note
The W3C XML Schema provides an XML interchange format for schema information. A single schema document provides descriptions of components associated with a single XML namespace, but several documents may describe components in the same schema, i.e. the same target namespace.

(ISO 19136:2007)

5. Conventions

This section provides details and examples for any conventions used in the document. Examples of conventions are symbols, abbreviations, use of XML schema, or special notes regarding how to read the document.

All UML diagrams in this document follow the guidance as documented in OGC OWS Common 2.0 section 5.2.

5.1. Requirement Class

Each normative statement (requirement or recommendation) in this specification is a member of a requirements class. Each requirements class is described in a discrete clause or sub-clause, and summarized using the following template:

Requirements Class

/req/{classM}

Target type

[artefact or technology type]

Name

[identifier]

Dependency

[identifier for another requirements class]

Requirement

/req/{classM}/{reqN}

Recommendation

/req/{classM}/{recO}

Requirement

/req/{classM}/{reqP}

Requirement/ Recommendation

[repeat as necessary]

All requirements in a requirements class must be satisfied. Hence, the requirements class is the unit of re-use and dependency, and the value of a dependency requirement is another requirements class. All requirements in a dependency must also be satisfied by a conforming implementation. A requirements class may consist only of dependencies and introduce no new requirements.

5.2. Requirement and Recommendation

All requirements and recommendations are normative, and each is presented using the following template:

Requirement [N]

/req/{classM}/[reqN]

{Normative statement}

The identifier /req/{classM}/[reqN] defines the requirement or recommendation. The use of this layout convention allows the normative provisions of this specification to be easily located by implementers.

5.3. Conformance Class

Conformance to this specification is possible at a number of levels, specified by conformance classes (Annex A). Each conformance class is summarized using the following template:

Conformance Class

/conf/{classM}

Dependency

[identifier for another conformance class]

Requirements

/req/{classA}

Tests

[reference to clauses(s) containing tests]

All tests in a class must be passed. Each conformance class tests conformance to a set of requirements packaged in a requirements class.

5.4. Identifiers

The normative provisions in this specification are denoted by the URI

All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base. The identifier supports cross-referencing of class membership, dependencies, and links from each conformance test to the requirements tested. In this specification identifiers are expressed as partial URIs or paths, which can be appended to a base URI that identifies the specification as a whole in order to construct a complete URI for identification in an external context.

The URI for each requirements class has the form:

The URI for each requirement or recommendation has the form:

The URI for each conformance class has the form:

The URI for each conformance test has the form:

5.5. Classifiers

This document contains a large number of references to classifiers that might sometimes be ambiguous. Classes and packages are simply referred by their name formed using “camelCase” name in mono space type. Duplicate names do exist and the scope (the package of a class or the class a property belongs to) must be made explicit.

OCL syntax will be used to identify a conceptual model classifier from the UML model.

Package::{…}Package::Classifier::Property:Type

Package names are not formal in UML and can change from one implementation to another. The reference model used by PipelineML, and several other domain models, is HollowWorld. For example, a complete path for a SF_SamplingPoint in HollowWorld (from HollowWorld root) is

ISO TC211::ISO 19156 All::ISO 19156:2011 Observations and Measurements::Sampling Features::samplingPoint::SF_SamplingPoint

For the sake of readability, and also because some HollowWorld package names do not have OCL friendly names (e.g. some package names contain ‘:’, as shown in the previous example), this document will use shortcuts to identify packages. For example, for OM::SF_SamplingPoint, OM acts as a shortcut for (ISO TC211::ISO 19156 All::ISO 19156:2011 Observations and Measurements::*) that includes all classifiers in all sub packages and avoids creating a shortcut for all sub packages. The list of shortcuts is provided in Section 8.1.2. PipelineML also uses the recently published ISO19115-3 model which has numerous classifier name overlaps with ISO19115 from HollowWorld.

W3C XPath will be used in XML instances. XML entities will be identified using their full qualified name (namespace, identified by its prefix, and entity name).

6. Clauses not Containing Normative Material

ISO 19101:2014 defines a universe of discourse to be a view of the real or hypothetical world that includes everything of interest. That standard then defines a conceptual model to be a model that defines concepts of a universe of discourse.

The scope of this PipelineML Standard establishes the limits of the universe of discourse for this Standard. The next task is to discover and standardize the concepts within this scope. Because PipelineML attempts to avoid areas of discourse that contain clear overlap with other utility infrastructure concepts, it focuses on a subset of use cases specific to the pipeline industry to eliminate overlap and redundancy within the OGC community. Additionally, this limited scope of specialized use cases is designed to address a lack of application interoperability (in terms of data interchange) within the pipeline industry. These overarching design requirements directed the development of PipelineML toward structured rigidity over flexibility in coding patterns as well as detailed specificity.

The PipelineML conceptual model is defined in UML and follows the agreed upon OGC and TC211 conventions for using UML. Concepts were modeled in UML via Sparx Enterprise Architect and taken through a managed lifecycle development process. The UML was transformed into GML 3.3-compliant application schemas using ShapeChange. Sample PipelineML encoded files were then validated against the resulting schemas. Delta points (i.e., warnings and errors) between the sample encodings and the generated schemas were noted and the next round of refinements were made to the UML conceptual model and the sample files. The process repeated until all delta points were resolved and the UML conceptual model produced expected and agreed encoding results. These results provided a foundation for proposing a joint conceptual model and a GML-compliant encoding standard into a unified PipelineML Standard.

7. PipelineML Conceptual Model (Normative)

The PipelineML Conceptual Model is a mostly rigid framework for modeling oil and gas pipeline components. Oil and gas pipelines carry highly volatile product under pressure and mostly underground. These characteristics require precise and detailed information to assess and mitigate risks using such methods as computational fluid dynamics, aerial dispersion (for gas product), and spill flow simulation based on available elevation data (for liquid product).

To maximize application interoperability, the current version of the PipelineML Standard does not provide any mechanism for extensibility. A future revision may consider adding an extensibility framework provided that it does not negatively impact interoperability.

Creating a conceptual model that mimics the connectivity and detailed attributes of physical components is crucial to the design because the model should support well-known use cases, as well as provide a foundation for those yet to be defined. Providing a framework for future use case support is potentially achievable by closely matching the model to the physical components, connectivity, and properties.

Requirements Class

/req/pipelineml-conceptual

Target type

Encoding

Name

PipelineML Conceptual Model

Dependency

ISO19101:2002 Reference Model Clause 7

Dependency

ISO19103 2015 Conceptual Model Language

Dependency

ISO19104:2008

Dependency

Unified Modeling Language (UML). Version 2.3. May 2010

Requirement 1

/req/pipelineml-conceptual/similarity

Target encodings that are compliant with the conceptual model shall implement components of the conceptual model respecting their semantics, i.e. their definition and intent. In other words, the encoding must be highly semantically similar to components of the conceptual model. Semantic similarity can be tested in multiple ways, including but not limited to: (i) direct comparison of UML components, (ii) comparison after mapping components to a common expressive knowledge representation language, such as first order logic or common logic, or (iii) comparison after mapping components to a reference ontology.

Requirement 1

/req/pipelineml-conceptual/similarity

An encoding, when claiming compliance with this conceptual model, SHALL implement its components (classes, attributes, relationships) respecting the conceptual model definitions and intent, such that high semantic similarity is obtained between the encoding and conceptual model components.

The target implementation of the conceptual model is generally an encoding specification or a schema (which could use technologies like XSD, for example) and not a data instance. The conceptual model, expressed using UML, provides naming, structure and cardinality for any physical implementation. The UML model is a normative artifact as the official representation of PipelineML. Rules that can be unambiguously inferred from the UML model will not be documented as explicit requirements. Specific encoding idiosyncrasies shall be addressed in the requirement clauses pertaining to that encoding.

7.1. UML Model Requirement Class

The UML model provides name, structure and cardinality for data elements composing various potential physical implementations of PipelineML. There are formal mappings between UML and GML (ISO-19136). Although it is assumed that UML is technologically neutral, in reality UML models actually address some of the encoding specification details. The current PipelineML UML model has been designed as a GML application according to ISO 19109 and borrows some of artifacts of GML. Several design decisions were guided by limitations of UML (e.g. single inheritance) and XSD (package dependencies artefacts). However, the UML model is detailed enough to constrain the main elements of any encoding; the names of entities and the cardinality of properties, the associations between entities and to some extent property types.

This section defines the minimum UML mapping requirements that shall be met by any target claiming compliance to this specification.

7.1.1. Structural Overview of Requirement Classes

The Requirement Classes for this standard are structured as UML Packages in Figure 2. Below is a brief summary of the function of each of these Requirements Classes.

7.1.1.1. PMLComponent

PMLComponent is the core Requirements Class. This class contains information about the PipelineML dataset that can contain information about pipeline component classes, their attributes, and associations. PMLComponent also contains the definition of types such as data types and external reference code lists.

7.1.1.2. PMLAnomaly

PMLAnomaly is a potential future Requirements Class that may be implemented as part of a modular schema design in a future update to this Standard. This class contains information about anomalies observed and measured as spatial voids (corrosion), dents, scars, gouges, etc. in surfaces of pipeline components. This information is tracked in terms of geospatial location, percentage of wall depth loss, circumferential orientation, proximity to welds, and temporal changes of anomaly area/volume to assess risk and determine remediation prioritization. No additional information is provided for this class as it is simply noted for future potential use.

image
Figure 2. Encoding Requirements classes dependencies

Figure 2 also shows (external) OGC and ISO standards as Packages on which Requirements Classes in this Standard depend. Below is a brief summary of the function of each of these Standards.

7.1.1.3. ISO-19103-CoreDataTypes

Provides the core data types (e.g., CharacterString, Integer, Date) used in this Standard.

7.1.1.4. OGC-ASTopic1-FeatureGeometry

Provides most of the geometry types (e.g., Point, LineString, Polygon) used for spatial representations in this Standard.

7.1.1.5. OGC-ASTopic2 - SpatialReferencingByCoordinates

Defines Coordinate Reference Systems.

7.1.1.6. ISO-19109-ApplicationSchema

Defines the General Feature Model upon which this Standard is based.

7.1.1.7. Property Cardinality

All properties that could feasibly be made optional are optional in PipelineML. Structural rigidity is used to ensure consistency, application interoperability, and to streamline application development. Some degree of flexibility is provided through the omission of optional properties. This allow data packages to be as concise as possible. Also, this supports the ability for a package to contain only coterminous components, only pipelines, or only connectors/welds based on various needs.

7.1.2. Package Shortcuts

The following shortcuts are used to refer to external (non-PipelineML) classifiers.

Shortcut Full path

GEO

ISO TC211/ISO 19107 All/ISO 19107:2003 Spatial Schema

Primitive

ISO TC211/ISO 19103 All/ISO 19103:2005 Conceptual schema language

GML

ISO TC211/ISO 19136:2007 GML

7.2. PipelineML Abstract Requirements Class (Normative)

Abstract Requirements Class

/req/pipelineml-abstract

Target type

Encoding

Name

PipelineML Abstract Requirements Class

Dependency

ISO19103 2015 Conceptual Model Language

Dependency

ISO19107:2003 Spatial Schema

Dependency

ISO19109:2015 Rules for application schemas

Dependency

RFC 3986 Uniform Resource Identifier (URI): Generic Syntax

Dependency

ISO19115-3 Metadata

Requirement 2

/req/pipelineml-abstract/uml-entity-name

Requirement 3

/req/pipelineml-abstract/uml-cardinality

Requirement 4

/req/pipelineml-abstract/uml-abstract

Requirement 5

/req/pipelineml-abstract/uml-polymorphism

Requirement 6

/req/pipelineml-abstract/quantities-uom

Requirement 7

/req/pipelineml-abstract/codelist

This section presents requirements to which all target encodings must conform in to order to claim compliance to PipelineML.

7.2.1. Naming of entities

Requirement 2

/req/pipelineml-abstract/uml-entity-name

When the target implementation allows it, the exact name of the classifier SHALL be used.

If a target implementation is capable of encoding all the artefacts (classes and properties) using the same names used in UML, it shall do so.

7.2.2. Cardinality

Requirement 3

/req/pipelineml-abstract/uml-cardinality

If the target implementation allows it, it SHALL implement the same cardinality of properties and associations as defined in the UML.

Cardinality shall be the same as defined in UML model.  Since essentially all properties are optional, this clause addresses the upper bounds of cardinality: “1” or “many” in almost all cases.  Therefore, if the UML model limits a property’s maximum cardinality to “1”, then the target implementation cardinality cannot be “many”.

7.2.3. Abstract Classes

Requirement 4

/req/pipelineml-abstract/uml-asbstract

Abstract classes SHALL NOT be materialised.

Not all physical implementations support the concept of an abstract class, or even inheritance and polymorphism. XSD does support that concept and all its implications, but JSON does not – although JavaScript can somewhat. This requirement specifies that the encoding specification shall not allow materialization of an instance of a class stereotyped as abstract. In the UML diagram shown in Figure 3, abstract classes are shown with yellow backgrounds while concrete classes are displayed with blue backgrounds.

7.2.4. Polymorphism

Requirement 5

/req/pipelineml-abstract/uml-polymorphism

A target implementation SHALL implement type substitutions inferred from the UML model.

The type hierarchy of the UML model implies type substitutions for property values. Many property types are abstract types and only a concrete subtype may be materialised (as per /req/pipelineml-abstrac/uml-abstract). A target implementation shall consider type substitutions using mechanisms available for this implementation.

7.2.5. Quantities

Requirement 6

/req/pipelineml-abstract/quantities-uom

Quantities and measurements SHALL have explicit units of measure from a governed ontology.

The quantities and measurements units of measure SHALL be taken from the PipelineML UOM class. This is an externally managed controlled vocabulary.

7.2.6. Code List

Requirement 7

/req/pipelineml-abstract/codelist

Classes with stereotype CodeList SHALL be implemented as externally governed vocabularies which terms are encoded as URIs (RFC 3986).

All properties that require formal vocabularies are modelled in UML as classes having the stereotype CodeList. All codelist classes in PipelineML define a restricted vocabulary with a prescribed URI (RFC 3986) containing authoritative codes and definitions defined as a GML 3.3 dictionary. Compliance to the PipelineML Standard includes compliance with the prescribed authoritative data. A mechanism is defined within the PipelineML Standard for identification of substandard data.

7.3. Linked Open Data Requirements Class (Normative)

Abstract Requirements Class

/req/pipelineml-lod

Target type

Encoding

Name

Linked Open Data Requirements Class

Dependency

URI

Dependency

HTTP

Requirement 8

/req/pipelineml-lod/codelistURI

Recommendation 9

/req/pipelineml-lod/codelistURIexception

Requirement 10

/req/pipelineml-lod/identifier

Requirement 11

/req/pipelineml-lod/byref

Although OGC standards are not restricted to a web environment, they are strongly influenced by this environment. PipelineML was originally developed specifically for XML (due to its robust, mature capabilities as an ecosystem capable of supporting the weight of a data interchange standard), but many other encodings are suitable hypermedia formats (RDF/XML, JSON-LD, HTML). This requirements class describes extra rules that shall be implemented to turn PipelineML data instances into hypermedia compatible with Linked Open Data principles.

Linked Open Data is a method to publish structured data on the web. It leverages existing web technologies such as HTTP (transfer protocol) and URI (addressing over the web) to connect structured resources. The principle is similar to interconnected web pages through hyperlinks, except that pages are replace with structured information that can be processed by machines.

7.3.1. Code List URI

Requirement 8

/req/pipelineml-lod/codelistURI

All URIs used for reference code lists SHALL conform to the official URI governed by the OGC PipelineML Standards Working Group (SWG) or an officially designated governing body granted responsibility for managing PipelineML reference code lists, codes, terms, definitions, and associated attributes (PipelineML Authoritative Data Governance Body).

All reference code lists that conform to the codelistURI construct SHALL conform to the official URI governed by the OGC PipelineML Standards Working Group (SWG) or an officially designated governing body granted responsibility for managing PipelineML reference code lists, codes, terms, definitions, and associated attributes (PipelineML Authoritative Data Governance Body). A URI used for vocabulary terms that utilizes PipelineML authoritative code values SHALL be dereferenceable to one or more representations of the vocabulary term.

Requirement 9

/req/pipelineml-lod/codelistURIexception

[Recommendation] Certain PipelineML codelists are considered to be immature as the codes have not been fully developed and vetted across pipeline industry experts. As such, these codelists are designated to permit the use of non-authoritative codes. In these designated code lists, if a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following 5 guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone wanted to encode the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value(s) to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

7.3.2. Identifier

Requirement 10

/req/pipelineml-lod/identifier

HTTP URI used as entity identifiers SHALL be to one or more representations of that entity.

This requirement demands that the target ensures that a data instance exposes a URI as a unique identifier for this feature and this identifier SHALL be dereferenceable to one or more representations of that feature.

7.3.3. ByReference Associations

Requirement 11

/req/pipelineml-lod/byref

External references to an entity conforming to [/req/gsml4-lod/identifier] shall be expressed using this entity identifier.

Serialization of a dataset will often omit the full description of a feature and replace the property value with an external reference. A reference to this feature is formed by the dereferenceable identifier described in clause 8.3.3. A client ingesting the dataset can use this reference to extract a feature representation if need be. Over the web, this reference shall be a HTTP URI that can be dereferenced to one or more representations of that feature.

7.4. PipelineML Encoding Requirements Class (Normative)

Requirements Class

/req/pipelineml-encoding

Target type

Encoding

Name

PipelineML Encoding Model

Dependency

/req/pipelineml-conceptual

Dependency

ISO19101:2002 Reference Model Clause 7

Dependency

ISO19103 2015 Conceptual Model Language

Dependency

ISO19104:2008

Dependency

Unified Modeling Language (UML). Version 2.3. May 2010

Requirement 12

/req/pipelineml-encoding/similarity

Target encodings that are compliant with the conceptual model shall implement components of the conceptual model respecting their semantics, i.e. their definition and intent. In other words, encodings must be highly semantically similar to components of the conceptual model. Semantic similarity can be tested in multiple ways, including but not limited to: (i) direct comparison of UML components, (ii) comparison after mapping components to a common expressive knowledge representation language, such as first order logic or common logic, or (iii) comparison after mapping components to a reference ontology.

Requirement 12

/req/pipelineml-encoding/similarity

A target encoding, when claiming compliance with this conceptual model, SHALL implement its components (classes, attributes, relationships) respecting the conceptual model definitions and intent, such that high semantic similarity is obtained between the encoding and conceptual model components.

7.5. PMLComponent Class Requirements Class (Normative)

Requirements Class

/req/pmlcomponent

Target type

Encoding of conceptual model

Name

PMLComponent

Dependency

/req/pipelineml-conceptual

Dependency

urn:iso:is:iso:19103:clause:7

Dependency

http://www.opengis.net/doc/AS/Topic1

Dependency

urn:iso:is:iso:19109:req:uml:feature

Dependency

http://www.opengis.net/doc/AS/Topic2

Requirement 13

/req/pmlcomponent/dataset

Requirement 14

/req/pmlcomponent/classes

Requirement 15

/req/pmlcomponent/crs

Requirement 16

/req/pmlcomponent/19103

Requirement 17

/req/pmlcomponent/topic-1

Requirement 18

/req/pmlcomponent/19109

Requirement 19

/req/pmlcomponent/boundtypes

image
Figure 3. PMLComponent Core Requirements Class

Although PipelineML is designed to support a modular framework, the initial release of the standard contains only a single GML application schema by the name of PMLComponent(.xsd). This small footprint schema is designed to address some specific use cases within the pipeline industry. PMLComponent is the core requirements class, as shown in Figure 3. The root class, PMLComponent, specifies the PMLDataset and all classes contained within this requirement class.

Requirement 13

/req/pmlcomponent/dataset

A PipelineML encoding shall specify a PMLDataset class in whatever format that is appropriate to that encoding (e.g., an XML document for GML encoding).

The dataset may contain any number of occurrences of each of the following classes: pipeline, assembly, collection, component, pipeconnector, virtualconnector, cap, compressor, elbow, flange, launcherreceiver, linepipe, meter, pump, reducer, tap, tee, valve, casing, coating, and sleeve.

Requirement 14

/req/pmlcomponent/classes

The PMLComponent Requirements Class Classes (shown in blue in Figure 3) SHALL be provided by the encoding in a manner consistent with the encoding.

Requirement 15

/req/pmlcomponent/crs

A PipelineML encoding SHALL support coordinate reference systems in accordance with OGC Abstract Specification Topic 2, Spatial Referencing by Coordinates.

image
Figure 4. ISO 19103 Core Data Types

Requirement 16

/req/pmlcomponent/19103

A PipelineML encoding SHALL support the core data types specified in ISO 19103 that are appropriate to the supported subject area(s).

Requirement 17

/req/pmlcomponent/topic-1

A PipelineML encoding SHALL support the geometry types specified in the OGC Abstract Specification Topic 1, Feature Geometry that are appropriate to the supported subject area(s). Additional geometry types, not found in Topic 1, but required by a specific requirements class, are specified in that requirements class.

image
Figure 5. ISO 19109 - Rules for application schema – Feature Type

Requirement 18

/req/pmlcomponent/19109

A PipelineML encoding SHALL support the uml:feature requirement(s) in ISO 19109:2015 that are appropriate to the supported subject area(s). Each instance of FeatureType shall be implemented by the encoding’s equivalent of a UML Class having a generalization association with AnyFeature and with a stereotype of FeatureType.

Requirement 19

/req/pmlcomponent/boundtypes

A PipelineML encoding SHALL support the use of bound data constructsThese constructs support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type is dereferencable to a concatenated string of attributes separated by semicolonsThe utilization of bound data types is considered a best practice over the use of unbound data types, when available, as it represents the highest level of data pedigree.

7.5.1. PMLDataset Class Requirements Class (Normative)

image
Figure 6. PMLDataset Requirements Class
image
image
Figure 7. PMLComponent Requirements Class Classes

The PMLDataset Class is a concrete class and therefore may be encoded into a PipelineML dataset. Figure 4 shows the key class relationships related to the PMLDataset class (note that the abstract and concrete classes that inherit from the Component class are not shown in this diagram for readability). The PMLDataset class contains header information (metadata) about the PipelineML dataset and relationships to other classes:

datasetID: A required machine-readable globally unique instance identifier for this feature. This identifier is unique within a PipelineML data package and is retained for the same piece of componentry throughout all subsequent PipelineML versions being distributed.

code: An optional human-readable string that is unique within the context of this entity (component) type, but not globally unique across all entity types

name: An optional call name by which the classes grouped in this class can commonly be references

comment: An optional comment pertaining to the dataset

dateTime: The required date and time that the dataset was created and therefore the point-in-time for which the data is valid

datasetVersion: The optional version number of the dataset

application: The optional software application (including version) used to generate the dataset

author: The optional person or organization or organizational department which created this dataset

pmlVersion: The required version number of the PipelineML encoding standard used to generate this dataset

language: The optional language used in the dataset to specify the default human language used for the data. It is specified in the xml:lang datatype. The default value is English.

defaultCRS: The required default coordinate reference system which is used for all spatial representations within the dataset except where overridden by the coordinate reference system defined for an individual pipeline component

pipeline: any number of Pipelines

assembly: any number of Assemblies

collection: any number of Collections

collectionMember: any number of CollectionMembers

component: The Component Class is an abstract class and SHALL NOT be encoded.

connectorComponent: The ConnectorComponent Class is an abstract class and SHALL NOT be encoded.

coterminousComponent: The CoterminousComponent Class is an abstract class and SHALL NOT be encoded.

appurtenantComponent: The AppurtenantComponent Class is an abstract class and SHALL NOT be encoded.

pipeconnector: any number of PipeConnectors

virtualconnector: any number of VirtualConnectors

cap: any number of Caps

compressor: any number of Compressors

elbow: any number of Elbows

flange: any number of Flanges

launcherreceiver: any number of Launcherreceivers

linepipe: any number of Linepipes

meter: any number of Meters

pump: any number of Pumps

reducer: any number of Reducers

tap: any number of Taps

tee: any number of Tees

valve: any number of Valves

casing: any number of Casing

coating: any number of Coatings

sleeve: any number of Sleeves

7.5.1.1. Pipeline Class Requirements Class (Normative)

Requirements Class

/req/pipeline

Target type

Encoding of conceptual model

Name

PMLComponent Pipeline

Dependency

/req/pmlcomponent

Requirement 20

/req/pipeline/pipelineboundtype-boundtype

Requirement 21

/req/pipeline/pipelineboundtype-codelistURI

Requirement 22

/req/pipeline/pipelineboundtype-exclusivity

Requirement 23

/req/pipeline/pipelineclassification-codelistURI

Requirement 24

/req/pipeline/pipelineclassification-exclusivity

Requirement 25

/req/pipeline/pipelinetype-codelistURI

Requirement 26

/req/pipeline/pipelinetype-exclusivity

Requirement 27

/req/pipeline/pipelinesubtype-codelistURI

Requirement 28

/req/pipeline/pipelinesubtype-exclusivity

The Pipeline Class is a concrete class and therefore MAY be encoded into a PipelineML dataset. This class is an aggregation of features designed to represent a comprehensive set of pipeline components that collectively define a pressurized pipeline system capable of carrying product. This class contains classes and attributes as shown in Figure 8.

The Pipeline Class is rigidly modeled after the physical connectivity of pipeline components. If a Pipeline feature is defined, it SHALL contain one or more Assembly Classes. An Assembly Class defines a segment of pipeline components that perform a single primary function (e.g. mainline assembly, launcherreceiver assembly, storage tank assembly, etc.).

image
Figure 8. Pipeline Requirements Class

The Pipeline Requirements Class contains attributes and relationships to other classes:

pipelineID: A required machine-readable globally unique instance identifier for this feature. This identifier is unique within a PipelineML data package and is retained for the same piece of componentry throughout all subsequent PipelineML versions being distributed.

code: An optional string that is unique within the context of this entity (component) type, but not globally unique across all entity types

name: An optional name of the Pipeline

comment: An optional string that allows for text comment to be provided pertaining to a specific instance of an assembly

pipelineBoundType: An optional value that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: pipelineClassification; pipelineType; pipelineSubType.

Requirement 20

/req/pipeline/pipelineboundtype-boundtype

This optional bound attribute pipelineBoundType SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 21

/req/pipeline/pipelineboundtype-codelistURI

This optional bound attribute pipelineBoundType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipelineboundtype . This value SHALL be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 22

/req/pipeline/pipelineboundtype-exclusivity

This optional bound attribute pipelineBoundType MAY be populated, or its corresponding set of unbound attributes (pipelineClassification, pipelineType, and pipelineSubType) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pipelineClassification: An optional value that, if populated, SHALL be dereferenceable to a string value is used to define the classification of the pipeline. The classification describes the medium intended to be transported through this pipeline. This attribute SHALL NOT be provided if the attribute pipelineBoundType is populated for reasons of disambiguation.

Requirement 23

/req/pipeline/pipelineclassification-codelistURI

This optional unbound attribute pipelineClassification SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipelineclassification . This value SHALL be dereferencable to a string attribute.

Requirement 24

/req/pipeline/pipelineclassification-exclusivity

This optional unbound attribute pipelineClassification MAY be populated, or its corresponding bound attribute pipelineBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pipelineType: An optional value is used to define the type of the pipeline. This attribute SHALL NOT be provided if the attribute pipelineBoundType is populated for reasons of disambiguation. This includes such values as "distribution", "gathering", "transmission" and "utility".

Requirement 25

/req/pipeline/pipelinetype-codelistURI

This optional unbound attribute pipelineType SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipelinetype . This value SHALL be dereferencable to a string attribute.

Requirement 26

/req/pipeline/pipelinetype-exclusivity

This optional unbound attribute pipelineType MAY be populated, or its corresponding bound attribute pipelineBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pipelineSubType: An optional value is used to define the subtype of the pipeline. This attribute SHALL NOT be provided if the attribute pipelineBoundType is populated for reasons of disambiguation.

Requirement 27

/req/pipeline/pipelinesubtype-codelistURI

This optional unbound attribute pipelineSubType SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipelinesubtype . This value SHALL be dereferencable to a string attribute.

Requirement 28

/req/pipeline/pipelinesubtype-exclusivity

The optional unbound attribute pipelineSubType MAY be populated, or its corresponding bound attribute pipelineBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

assembly: any number of Assemblies

7.5.1.2. Assembly Class Requirements Class (Normative)

Requirements Class

/req/assembly

Target type

Encoding of conceptual model

Name

PMLComponent Assembly

Dependency

/req/pmlcomponent

Requirement 29

/req/assembly/componentexclusivity

Requirement 30

/req/assembly/assemblyboundtype-boundtype

Requirement 31

/req/assembly/assemblyboundtype-codelistURI

Requirement 32

/req/assembly/assemblyboundtype-exclusivity

Requirement 33

/req/assembly/assemblyclassification-codelistURI

Requirement 34

/req/assembly/assemblyclassification-exclusivity

Requirement 35

/req/assembly/assemblytype-codelistURI

Requirement 36

/req/assembly/assemblytype-exclusivity

Requirement 37

/req/assembly/assemblysubtype-codelistURI

Requirement 38

/req/assembly/assemblysubtype-exclusivity

The Assembly Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class is an aggregation of features designed to provide a single primary function (e.g. mainline assembly, launcherreceiver assembly, storage tank assembly, etc.). This class contains classes and attributes as shown in Figure 9. This diagram does not include concrete classes that inherit from the ConnectorComponent, Component, and AppurtenantComponent class as these classes are shown on previous diagrams.

Requirement 29

/req/assembly/componentexclusivity

Components SHALL be exclusive to a single assembly; that is, no component may exist in more than one assembly (as defined by the component identity attribute).

image
Figure 9. Assembly Requirements Class

The Assembly Class contains attributes and relationships to other classes:

assemblyID: A required machine-readable globally unique instance identifier for this feature. This identifier is unique within a PipelineML data package and is retained for the same piece of componentry throughout all subsequent PipelineML versions being distributed.

code: An optional human-readable string that is unique within the context of this entity (component) type, but not globally unique across all entity types

name: An optional call name by which the classes grouped in this class can commonly be references

comment: An optional human-readable comment pertaining to this class

length: An optional total in-line (gas flow) length of the assembly

startEngineeringStation: An optional surveyed engineering station value at the start of the object. This static attribute is designed to support legacy business use cases but is not part of a dynamic linear reference system. This is a placeholder for operators who are using legacy systems that are based on linear references. This attribute may be removed at some point in the future if no linear reference support is adopted or replaced with a comprehensive linear referencing system.

endEngineeringStation: An optional surveyed engineering station value at the end of the object. This static attribute is designed to support legacy business use cases but is not part of a dynamic linear reference system. This is a placeholder for operators who are using legacy systems that are based on linear references. This attribute may be removed at some point in the future if no linear reference support is adopted or replaced with a comprehensive linear referencing system.

assemblyBoundType: An optional value that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: assemblyClassification; assemblyType; assemblySubType.

Requirement 30

/req/assembly/assemblyboundtype-boundtype

This optional bound attribute assemblyBoundType SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 31

/req/assembly/assemblyboundtype-codelistURI

This optional bound attribute assemblyBoundType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/assemblyboundtype . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 32

/req/assembly/assemblyboundtype-exclusivity

This optional bound attribute assemblyBoundType MAY be populated, or its corresponding set of unbound attributes (assemblyClassification, assemblyType, and assemblySubType) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

assemblyClassification: A value that, if populated, SHALL be dereferenceable to a string value and is used to define the classification of the assembly. This attribute SHALL NOT be provided if the attribute assemblyBoundType is populated for reasons of disambiguation.

Requirement 33

/req/assembly/assemblyclassification-codelistURI

This optional unbound attribute assemblyClassification SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/assemblyclassification . This value SHALL be dereferencable to a string attribute.

Requirement 34

/req/assembly/assemblyclassification-exclusivity

This optional unbound attribute assemblyClassification MAY be populated, or its corresponding bound attribute assemblyBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

assemblyType: An optional value is used to define the type of the pipeline. This attribute SHALL NOT be provided if the attribute assemblyBoundType is populated for reasons of disambiguation.

Requirement 35

/req/assembly/assemblytype-codelistURI

This optional unbound attribute assemblyType SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/assemblytype . This value SHALL be dereferencable to a string attribute.

Requirement 36

/req/assembly/assemblytype-exclusivity

This optional unbound attribute assemblyType MAY be populated, or its corresponding bound attribute assemblyBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

assemblySubType: An optional value is used to define the subtype of the pipeline. This attribute SHALL NOT be provided if the attribute assemblyBoundType is populated for reasons of disambiguation.

Requirement 37

/req/assembly/assemblysubtype-codelistURI

This optional unbound attribute assemblySubType SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/assemblysubtype . This value SHALL be dereferencable to a string attribute.

Requirement 38

/req/assembly/assemblysubtype-exclusivity

This optional unbound attribute assemblySubType MAY be populated, or its corresponding bound attribute assemblyBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

component: The Component Class is an abstract class and SHALL NOT be encoded.

connectorComponent: The ConnectorComponent Class is an abstract class and SHALL NOT be encoded.

coterminousComponent: The CoterminousComponent Class is an abstract class and SHALL NOT be encoded.

appurtenantComponent: The AppurtenantComponent Class is an abstract class and SHALL NOT be encoded.

pipeconnector: any number of PipeConnectors

virtualconnector: any number of VirtualConnectors

cap: any number of Caps

compressor: any number of Compressors

elbow: any number of Elbows

flange: any number of Flanges

launcherreceiver: any number of Launcherreceivers

linepipe: any number of Linepipes

meter: any number of Meters

pump: any number of Pumps

reducer: any number of Reducers

tap: any number of Taps

tee: any number of Tees

valve: any number of Valves

casing: any number of Casing

coating: any number of Coatings

sleeve: any number of Sleeves

7.5.1.3. Collection Class Requirements Class (Normative)

Requirements Class

/req/collection

Target type

Encoding of conceptual model

Name

PMLComponent Collection

Dependency

/req/pmlcomponent

Requirement 39

/req/collection/collectionboundtype-boundtype

Requirement 40

/req/collection/collectionboundtype-codelistURI

Requirement 41

/req/collection/collectionboundtype-exclusivity

Requirement 42

/req/collection/collectionclassification-codelistURI

Requirement 43

/req/collection/collectionclassification-exclusivity

Requirement 44

/req/collection/collectiontype-codelistURI

Requirement 45

/req/collection/collectiontype-exclusivity

Requirement 46

/req/collection/collectionsubtype-codelistURI

Requirement 47

/req/collection/collectionsubtype-exclusivity

The Collection Class is a concrete class and therefore may be encoded into a PipelineML dataset. Whereas the Pipeline and Assembly Classes are rigidly designed to mimic the connectivity of physical pipeline components, the Collection Class provides flexible aggregation of components to support a variety of business needs. This class contains classes and attributes as shown in Figure 10.

image
Figure 10. Collection Requirements Class

The Collection Class contains attributes and relationships to other classes:

collectionID: A required machine-readable globally unique instance identifier for this feature. This identifier is unique within a PipelineML data package and is retained for the same piece of componentry throughout all subsequent PipelineML versions being distributed.

code: An optional human-readable string that is unique within the context of this entity (component) type, but not globally unique across all entity types

name: An optional call name by which the classes grouped in this class can commonly be references

comment: An optional human-readable comment pertaining to this class

collectionBoundType: An optional value that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: collectionClassification; collectionType; collectionSubType.

Requirement 39

/req/collection/collectionboundtype-boundtype

This optional bound attribute collectionBoundType SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 40

/req/collection/collectionboundtype-codelistURI

This optional bound attribute collectionBoundType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/collectionboundtype . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 41

/req/collection/collectionboundtype-exclusivity

This optional bound attribute collectionBoundType MAY be populated, or its corresponding bound set of attributes (collectionClassification, collectionType, and collectionSubType) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

collectionClassification: An optional value that, if populated, SHALL be dereferenceable to a string value is used to define the classification of the pipeline. This attribute SHALL NOT be provided if the attribute collectionBoundType is populated for reasons of disambiguation.

Requirement 42

/req/collection/collectionclassification-codelistURI

This optional unbound attribute collectionClassification SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/collectionclassification . This value SHALL be dereferencable to a string attribute.

Requirement 43

/req/collection/collectionclassification-exclusivity

This optional unbound attribute collectionClassification MAY be populated, or its corresponding bound attribute collectionBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

collectionType: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the type of collection. This attribute SHALL NOT be provided if the attribute collectionBoundType is populated for reasons of disambiguation.

Requirement 44

/req/collection/collectiontype-codelistURI

This optional unbound attribute collectionType SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/collectiontype . This value SHALL be dereferencable to a string attribute.

Requirement 45

/req/collection/collectiontype-exclusivity

This optional unbound attribute collectionType MAY be populated, or its corresponding bound attribute collectionBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

collectionSubType: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the subtype of collection. This attribute SHALL NOT be provided if the attribute collectionBoundType is populated for reasons of disambiguation.

Requirement 46

/req/collection/collectionsubtype-codelistURI

This optional unbound attribute collectionSubType SHALL utilize the PipelineML codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/collectionsubtype . This value SHALL be dereferencable to a string attribute.

Requirement 47

/req/collection/collectionsubtype-exclusivity

This optional unbound attribute collectionSubType MAY be populated, or its corresponding bound attribute collectionBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

collectionMember: Any number of CollectionMembers. A CollectionMember Class is a concrete class that has a one-to-one relationship with the abstract Component Class. It contains a list of component ID’s of which the collection is built up.

7.5.1.4. Component Class Requirements Class (Normative)

The Component Class is an abstract class and SHALL NOT be encoded into a PipelineML dataset. This abstract class provides an inheritance mechanism for passing attributes on to other classes that inherit from it. This class also establishes relationships with other classes in the model. This class contains classes and attributes as shown in Figure 11 (the concrete classes generalized from the ConnectorComponent, CoterminousComponent, and AppurtenantComponent classes are not shown as they are shown in other diagrams in this document).

image
Figure 11. Component Requirements Class

The Component Class contains attributes and relationships to other classes:

abandonDate: An optional date when the component was abandoned from service

code: An optional human-readable string that is unique within the context of this entity (component) type, but not globally unique across all entity types

comment: An optional human-readable comment pertaining to this class

manufacturerDate: An optional date when the component was manufactured

installDate: An optional date when the component was installed on the pipeline system

removeDate: An optional date when the assembly was removed from the pipeline system

length: An optional total length of the assembly

location: One or more optional geospatial coordinates (x, y; x, y, z,; x, y, z, m) based on a specified Coordinate Reference System (CRS) in 0 (point), 1 (linestring), or 2 (polygonal) spatial dimensions, derived from the GML GM_Object class. The spatial dimensions refer to the representation of the described feature.

startEngineeringStation: An optional surveyed engineering station value at the start of the object. This static attribute is designed to support legacy business use cases but is not part of a dynamic linear reference system.

endEngineeringStation: An optional surveyed engineering station value at the end of the object. This static attribute is designed to support legacy business use cases but is not part of a dynamic linear reference system.

connectorComponent: The ConnectorComponent Class is an abstract class and SHALL NOT be encoded.

coterminousComponent: The CoterminousComponent Class is an abstract class and SHALL NOT be encoded.

appurtenantComponent: The AppurtenantComponent Class is an abstract class and SHALL NOT be encoded.

pipeconnector: any number of PipeConnectors

virtualconnector: any number of VirtualConnectors

cap: any number of Caps

compressor: any number of Compressors

elbow: any number of Elbows

flange: any number of Flanges

launcherreceiver: any number of Launcherreceivers

linepipe: any number of Linepipes

meter: any number of Meters

pump: any number of Pumps

reducer: any number of Reducers

tap: any number of Taps

tee: any number of Tees

valve: any number of Valves

casing: any number of Casing

coating: any number of Coatings

sleeve: any number of Sleeves

7.5.1.5. ConnectorComponent Class Requirements Class (Normative)

The ConnectorComponents Class is abstract and SHALL NOT be encoded into a PipelineML dataset. This abstract class provides an inheritance mechanism for passing attributes on to other classes that inherit from it. This class also establishes relationships with other classes in the model. What differentiates ConnectorComponents from CoterminousComponents and AppurtinentComponents is that connectors join coterminous components that are involved in a pipeline system. CoterminousComponents and ConnectorsComponents are pressurizable whereas AppurtenantComponents are affixed around/over coterminous and connector components. Connectors do not add physical length (of any significance) to the pipeline. Connectors are not applicable to AppurtenantComponents because appurtenances do not have connections but are directly applied to or around coterminous components. This class contains classes and attributes as shown in Figure 12.

image
Figure 12. ConnectorComponent Requirements Class

The ConnectorComponent Class contains attributes and relationships to other classes:

componentID1: A required unique identifier for the first component that this connector connects

componentID2: An optional unique identifier for the second component that this connector connects. This attribute is optional to support applications that only identify a single component with a connection.

pipeconnector: The ConnectorComponent abstract class can be instantiated as a concrete Pipeconnector class/encoding

virtualconnector: The ConnectorComponent abstract class can be instantiated as a concrete Virtualconnector class/encoding

7.5.1.6. Pipeconnector Class Requirements Class (Normative)

Requirements Class

/req/pipeconnector

Target type

Encoding of conceptual model

Name

PMLComponent Pipeconnector

Dependency

/req/pmlcomponent

Requirement 48

/req/pipeconnector/pipeconnectormanufacturer-codelistURIexception

Requirement 49

/req/pipeconnector/pipeconnectortype-codelistURI

Requirement 50

/req/pipeconnector/pipeconnectortype-exclusivity

Requirement 51

/req/pipeconnector/pipeconnectormaterial-codelistURI

Requirement 52

/req/pipeconnector/pipeconnectorboundtype-boundtype

Requirement 53

/req/pipeconnector/pipeconnectorboundtype-codelistURI

Requirement 54

/req/pipeconnector/pipeconnectorboundtype-exclusivity

Requirement 55

/req/pipeconnector/pipeconnectorsubtype-codelistURI

Requirement 56

/req/pipeconnector/pipeconnectorsubtype-exclusivity

The Pipeconnector Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 13.

image
Figure 13. Pipeconnector Requirements Class

The Pipeconnector Class contains attributes and relationships to other classes:

pipeconnectorManufacturer: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the name of the company that manufactured the component. In the case of welding rods, this would be the company who manufactured the rods. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability.

Requirement 48

/req/pipeconnector/pipeconnectormanufacturer-codelistURIexception

[Recommendation] This optional attribute pipeconnectorManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipeconnectormanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

pipeconnectorType: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the type of connector

Requirement 49

/req/pipeconnector/pipeconnectortype-codelistURI

This optional unbound attribute pipeconnectorType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipeconnectortype . This value SHALL be dereferencable to a string attribute.

Requirement 50

/req/pipeconnector/pipeconnectortype-exclusivity

This optional unbound attribute pipeconnectorType MAY be populated, or its corresponding bound attribute pipeconnetorBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pipeconnectorMaterial: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the material used in the connection

Requirement 51

/req/pipeconnector/pipeconnectormaterial-codelistURI

This optional attribute pipeconnectorMaterial SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipeconnectormaterial . This value SHALL be dereferencable to a string attribute.

pipeconnectorNumber: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the number assigned to this connection

pipeconnectorBoundType: An optional value that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: pipeconnectorType; pipeconnectorSubType.

Requirement 52

/req/pipeconnector/pipeconnectorboundtype-boundtype

This optional bound attribute pipeconnectorBoundType SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 53

/req/pipeconnector/pipeconnectorboundtype-codelistURI

This optional bound attribute pipeconnectorBoundType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipeconnectorboundtype . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 54

/req/pipeconnector/pipeconnectorboundtype-exclusivity

This optional bound attribute pipeconnectorBoundType MAY be populated, or its corresponding set of unbound attributes (pipeconnectorType, and pipeconnectorSubType) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pipeconnectorSubType: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the subtype of connector

Requirement 55

/req/pipeconnector/pipeconnectorsubtype-codelistURI

This optional unbound attribute pipeconnectorSubType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pipeconnectorsubtype . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 56

/req/pipeconnector/pipeconnectorsubtype-exclusivity

This optional unbound attribute pipeconnectorType MAY be populated, or its corresponding bound attribute pipeconnectorBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

7.5.1.7. Virtualconnector Class Requirements Class

The Virtualconnector Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 14.

image
Figure 14. Virtualconnector Requirements Class

The Virtualconnector Class contains attributes and relationships to other classes:

virtualconnectorType: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the type of virtual connector

7.5.1.8. CoterminousComponent Class Requirements Class

The CoterminousComponent Class is an abstract class and therefore SHALL NOT be encoded into a PipelineML dataset. This class provides an inheritance mechanism for passing attributes on to other classes that inherit from it. This class also establishes relationships with other classes in the model. This class contains classes and attributes as shown in Figure 15.

image
Figure 15. CoterminousComponent Requirements Class

The CoterminousComponent Class contains attributes and relationships to other classes:

assemblyID: A required machine-readable globally unique instance identifier for this feature. This identifier is unique within a PipelineML data package and is retained for the same piece of componentry throughout all subsequent PipelineML versions being distributed.

pressureRating: An optional integer value is used to define the pressure rating of the pipeline component. This is not an operational pressure rating but a maximum pressure rating as established by the component manufacturer. This measurement SHALL include a units of measure reference.

cap: any number of Caps

compressor: any number of Compressors

elbow: any number of Elbows

flange: any number of Flanges

launcherreceiver: any number of Launcherreceivers

linepipe: any number of Linepipes

meter: any number of Meters

pump: any number of Pumps

reducer: any number of Reducers

tap: any number of Taps

tee: any number of Tees

valve: any number of Valves

7.5.1.9. Cap Class Requirements Class (Normative)

Requirements Class

/req/cap

Target type

Encoding of conceptual model

Name

PMLComponent Cap

Dependency

/req/pmlcomponent

Requirement 57

/req/cap/capmanufacturer-codelistURIexception

Requirement 58

/req/cap/captype-codelistURI

Requirement 59

/req/cap/captype-exclusivity

Requirement 60

/req/cap/capmaterial-codelistURI

Requirement 61

/req/cap/capboundspecification-boundtype

Requirement 62

/req/cap/capboundspecification-codelistURI

Requirement 63

/req/cap/capboundspecification-exclusivity

Requirement 64

/req/cap/capspecification-codelistURI

Requirement 65

/req/cap/capspecification-exclusivity

Requirement 66

/req/cap/capweight-codelistURI

Requirement 67

/req/cap/capweight-exclusivity

Requirement 68

/req/cap/capbounddimension-boundtype

Requirement 69

/req/cap/capbounddimension-codelistURI

Requirement 70

/req/cap/capbounddimension-exclusivity

Requirement 71

/req/cap/capnominalpipesize-codelistURI

Requirement 72

/req/cap/capnominalpipesize-exclusivity

Requirement 73

/req/cap/capoutsidediameter-codelistURI

Requirement 74

/req/cap/capoutsidediameter-exclusivity

Requirement 75

/req/cap/capwallthickness-codelistURI

Requirement 76

/req/cap/capwallthickness-exclusivity

The Cap Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 16.

image
Figure 16. Cap Requirements Class

The Cap Class contains attributes and relationships to other classes:

capManufacturer: An optional attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external controlled vocabulary is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 57

/req/cap/capmanufacturer-codelistURIexception

[Recommendation] This optional attribute capManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capmanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

capType: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of cap component

Requirement 58

/req/cap/captype-codelistURI

This optional unbound attribute capType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/captype . This value SHALL be dereferencable to a string attribute.

Requirement 59

/req/cap/captype-exclusivity

This optional unbound attribute capType MAY be populated, or its corresponding bound attribute capBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capMaterial: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of material used to manufacture the component

Requirement 60

/req/cap/capmaterial-codelistURI

This optional attribute capMaterial SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capmaterial . This value SHALL be dereferencable to a string attribute.

capBoundSpecification: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: capSpecification; capWeight.

Requirement 61

/req/cap/capboundspecification-boundtype

This optional bound attribute capBoundSpecification SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 62

/req/cap/capboundspecification-codelistURI

This optional bound attribute capBoundSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capboundspecification . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 63

/req/cap/capboundspecification-exclusivity

This optional bound attribute capBoundSpecification MAY be populated, or its corresponding set of unbound attributes (capSpecification, and capWeight) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capSpecification: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the specification and specification date/version of the component. This attribute SHALL NOT be provided if the attribute capBoundSpecification is populated for reasons of disambiguation.

Requirement 64

/req/cap/capspecification-codelistURI

This optional unbound attribute capSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capspecification . This value SHALL be dereferencable to a string attribute.

Requirement 65

/req/cap/capspecification-exclusivity

This optional unbound attribute capSpecification MAY be populated, or its corresponding bound attribute capBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capWeight: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the weight characteristics (i.e. Schedule 40, Schedule 80, etc.) of the component. The weight is a number that defines the grade applicable to this component. This attribute SHALL NOT be provided if the attribute capBoundSpecification is populated for reasons of disambiguation.

Requirement 66

/req/cap/capweight-codelistURI

This optional unbound attribute capWeight SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capweight . This value SHALL be dereferencable to a string attribute.

Requirement 67

/req/cap/capweight-exclusivity

This optional unbound attribute capWeight MAY be populated, or its corresponding bound attribute capBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capBoundDimension: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: capNominalPipeSize; capOutsideDiameter; capWallThickness.

Requirement 68

/req/cap/capbounddimension-boundtype

This optional bound attribute capBoundDimension SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 69

/req/cap/capbounddimension-codelistURI

This optional bound attribute capBoundDimension SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capbounddimension . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 70

/req/cap/capbounddimension-exclusivity

This optional bound attribute capBoundDimension MAY be populated, or its corresponding set of unbound attributes (capNominalPipeSize, capOutsideDiameter, capWallThickness, and capLength) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capNominalPipeSize: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the nominal pipe size of the component. This attribute SHALL NOT be provided if the attribute capBoundDimension is populated for reasons of disambiguation.

Requirement 71

/req/cap/capnominalpipesize-codelistURI

This optional unbound attribute capNominalPipeSize SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capnominalpipesize . This value SHALL be dereferencable to a string attribute.

Requirement 72

/req/cap/capnominalpipesize-exclusivity

This optional unbound attribute capNominalPipeSize MAY be populated, or its corresponding bound attribute capBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capOutsideDiameter: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the outside diameter of the component. This attribute SHALL NOT be provided if the attribute capBoundDimension is populated for reasons of disambiguation.

Requirement 73

/req/cap/capoutsidediameter-codelistURI

This optional unbound attribute capOutsideDiameter SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capoutsidediameter . This value SHALL be dereferencable to a string attribute.

Requirement 74

/req/cap/ capoutsidediameter-exclusivity

This optional unbound attribute cap capOutsideDiameter MAY be populated, or its corresponding bound attribute capBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

capWallThickness: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the wall thickness of the component. This attribute SHALL NOT be provided if the attribute capBoundDimension is populated for reasons of disambiguation.

Requirement 75

/req/cap/capwallthickness-codelistURI

This optional unbound attribute capWallThickness SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/capwallthickness . This value SHALL be dereferencable to a string attribute.

Requirement 76

/req/cap/capwallthickness-exclusivity

This optional unbound attribute cap capWallThickness MAY be populated, or its corresponding bound attribute capBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

7.5.1.10. Compressor Class Requirements Class (Normative)

Requirements Class

/req/compressor

Target type

Encoding of conceptual model

Name

PMLComponent Compressor

Dependency

/req/pmlcomponent

Requirement 77

/req/compressor/compressormanufacturer-codelistURIexception

Requirement 78

/req/compressor/compressormanufacturer-exclusivity

Requirement 79

/req/compressor/compressortype-codelistURI

Requirement 80

/req/compressor/compressortype-exclusivity

Requirement 81

/req/compressor/compressorboundtype-boundtype

Requirement 82

/req/compressor/compressorboundtype-codelistURI

Requirement 83

/req/compressor/compressorboundtype-exclusivity

Requirement 84

/req/compressor/compressorstage-codelistURI

Requirement 85

/req/compressor/compressorstage-exclusivity

Requirement 86

/req/compressor/compressorthrow-codelistURI

Requirement 87

/req/compressor/compressorthrow-exclusivity

Requirement 88

/req/compressor/compressorstroke-codelistURI

Requirement 89

/req/compressor/compressorstroke-exclusivity

Requirement 90

/req/compressor/compressornominalpipesize-codelistURI

Requirement 91

/req/compressor/compressorboundmanufacturer-boundtype

Requirement 92

/req/compressor/compressorboundmanufacturer-codelistURI

Requirement 93

/req/compressor/compressorboundmanufacturer-exclusivity

Requirement 94

/req/compressor/compressorproductname-codelistURIexception

Requirement 95

/req/compressor/compressorproductname-exclusivity

Requirement 96

/req/compressor/compressormodelnumber-codelistURIexception

Requirement 97

/req/compressor/compressormodelnumber-exclusivity

Requirement 98

/req/compressor/compressorfueltype-codelistURI

Requirement 99

/req/compressor/compressorpowerrating-uom

Requirement 100

/req/compressor/compressorratedflow-uom

Requirement 101

/req/compressor/compressorpressuresuction-uom

Requirement 102

/req/compressor/compressorpressuredischarge-uom

The Compressor Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 17.

image
Figure 17. Compressor Requirements Class

The Compressor Class contains attributes and relationships to other classes:

compressorManufacturer: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 77

/req/compressor/compressormanufacturer-codelistURIexception

[Recommendation] This optional attribute compressorManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressormanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 78

/req/compressor/compressormanufacturer-exclusivity

This optional unbound attribute compressorManufacturer MAY be populated, or its corresponding bound attribute compressorBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorType: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of compressor component

Requirement 79

/req/compressor/compressortype-codelistURI

This optional unbound attribute compressorType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressortype . This value SHALL be dereferencable to a string attribute.

Requirement 80

/req/compressor/compressortype-exclusivity

This optional unbound attribute compressorType MAY be populated, or its corresponding bound attribute compressorBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorBoundType: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: compressorType; compressorStage; compressorThrow; compressorStroke.

Requirement 81

/req/compressor/compressorboundtype-boundtype

This optional bound attribute compressorBoundType SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 82

/req/compressor/compressorboundtype-codelistURI

This optional bound attribute compressorBoundType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorboundtype . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 83

/req/compressor/compressorboundtype-exclusivity

This optional bound attribute compressorBoundType MAY be populated, or its corresponding set of unbound attributes (compressorType, compressorStage, compressorThrow, and compressorStroke) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorStage: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the number of stages in use by the component. This attribute SHALL NOT be provided if the attribute compressorBoundType is populated for reasons of disambiguation.

Requirement 84

/req/compressor/compressorstage-codelistURI

This optional unbound attribute compressorStage SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorstage . This value SHALL be dereferencable to a string attribute.

Requirement 85

/req/compressor/compressorstage-exclusivity

This optional unbound attribute compressorStage MAY be populated, or its corresponding bound attribute compressorBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorThrow: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the throw of the component. This attribute SHALL NOT be provided if the attribute compressorBoundType is populated for reasons of disambiguation.

Requirement 86

/req/compressor/compressorthrow-codelistURI

This optional unbound attribute compressorThrow SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorthrow . This value SHALL be dereferencable to a string attribute.

Requirement 87

/req/compressor/compressorthrow-exclusivity

This optional unbound attribute compressorThrow MAY be populated, or its corresponding bound attribute compressorBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorStroke: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the stroke type of the component. This attribute SHALL NOT be provided if the attribute compressorBoundType is populated for reasons of disambiguation.

Requirement 88

/req/compressor/compressorstroke-codelistURI

This optional unbound attribute compressorStroke SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorstroke . This value SHALL be dereferencable to a string attribute.

Requirement 89

/req/compressor/compressorstroke-exclusivity

This optional unbound attribute compressorStroke MAY be populated, or its corresponding bound attribute compressorBoundType MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorNominalPipeSize: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the nominal pipe size of the component

Requirement 90

/req/compressor/compressornominalpipesize-codelistURI

This optional attribute compressorNominalPipeSize SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressornominalpipesize . This value SHALL be dereferencable to a string attribute.

compressorBoundManufacturer: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: compressorManufacturer; compressorProductName; compressorModelNumber.

Requirement 91

/req/compressor/compressorboundmanufacturer-boundtype

This optional bound attribute compressorBoundManufacturer SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 92

/req/compressor/compressorboundmanufacturer-codelistURI

This optional bound attribute compressorBoundManufacturer SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorboundmanufacturer . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 93

/req/compressor/compressorboundmanufacturer-exclusivity

This optional bound attribute compressorBoundManufacturer MAY be populated, or its corresponding set of unbound attributes (compressorManufacturer, compressorProductName, and compressorModelNumber) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorProductName: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the product name of the component. This attribute SHALL NOT be provided if the attribute compressorBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 94

/req/compressor/compressorproductname-codelistURIexception

[Recommendation] This optional attribute compressorProductName SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorproductname . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 95

/req/compressor/compressorproductname-exclusivity

This optional unbound attribute compressorProductName MAY be populated, or its corresponding bound attribute compressorBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorModelNumber: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the model number of the component. This attribute SHALL NOT be provided if the attribute compressorBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 96

/req/compressor/compressormodelnumber-codelistURIexception

[Recommendation] This optional attribute compressorModelNumber SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressormodelnumber . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 97

/req/compressor/compressormodelnumber-exclusivity

This optional unbound attribute compressorModelNumber MAY be populated, or its corresponding bound attribute compressorBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

compressorSerialNumber: An optional string value that defines a unique identification number established by the component manufacturer

compressorFuelType: An optional value that, if populated, SHALL be dereferenceable to define a string value describing the type of fuel used to operate the component.

Requirement 98

/req/compressor/compressorfueltype-codelistURI

This optional attribute compressorFuelType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/compressorfueltype . This value SHALL be dereferencable to a string attribute.

compressorPowerRating: An optional measurement made by the manufacturer that defines the amount of power the compressor is rated to produce. If this attribute is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 99

/req/compressor/compressorpowerrating-uom

If this optional attribute compressorPowerRating is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

compressorRatedFlow: An optional measurement made by the manufacturer that defines the rate of product flow the compressor is rated to produce. If populated is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 100

/req/compressor/compressorratedflow-uom

If this optional attribute compressorRatedFlow is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

compressorPressureSuction: An optional measurement made by the manufacturer that defines the amount of suction the compressor is rated to produce. If populated is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 101

/req/compressor/compressorpressuresuction-uom

If this optional attribute compressorPressureSuction is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

compressorPressureDischarge: An optional measurement made by the manufacturer that defines the amount of pressure the compressor is rated to discharge. If populated is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 102

/req/compressor/compressorpressuredischarge-uom

If this optional attribute compressorPressureDischarge is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

7.5.1.11. Elbow Class Requirements Class (Normative)

Requirements Class

/req/elbow

Target type

Encoding of conceptual model

Name

PMLComponent Elbow

Dependency

/req/pmlcomponent

Requirement 103

/req/elbow/elbowmanufacturer-codelistURIexception

Requirement 104

/req/elbow/elbowtype-codelistURI

Requirement 105

/req/elbow/elbowmaterial-codelistURI

Requirement 106

/req/elbow/elbowboundspecification-boundtype

Requirement 107

/req/elbow/elbowboundspecification-codelistURI

Requirement 108

/req/elbow/elbowboundspecification-exclusivity

Requirement 109

/req/elbow/elbowspecification-codelistURI

Requirement 110

/req/elbow/elbowspecification-exclusivity

Requirement 111

/req/elbow/elbowweight-codelistURI

Requirement 112

/req/elbow/elbowweight-exclusivity

Requirement 113

/req/elbow/elbowbounddimension-boundtype

Requirement 114

/req/elbow/elbowbounddimension-codelistURI

Requirement 115

/req/elbow/elbowbounddimension-exclusivity

Requirement 116

/req/elbow/elbowangle-codelistURI

Requirement 117

/req/elbow/elbowangle-exclusivity

Requirement 118

/req/elbow/elbownominalpipesize-codelistURI

Requirement 119

/req/elbow/elbownominalpipesize-exclusivity

Requirement 120

/req/elbow/elbowoutsidediameter-codelistURI

Requirement 121

/req/elbow/elbowoutsidediameter-exclusivity

Requirement 122

/req/elbow/elbowwallthickness-codelistURI

Requirement 123

/req/elbow/elbowwallthickness-exclusivity

The Elbow Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 18.

image
Figure 18. Elbow Requirements Class

The Elbow Class contains attributes and relationships to other classes:

elbowManufacturer: An optional attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 103

/req/elbow/elbowmanufacturer-codelistURIexception

[Recommendation] This optional attribute elbowManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowmanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

elbowType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of elbow component

Requirement 104

/req/elbow/elbowtype-codelistURI

This optional attribute elbowType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowtype . This value SHALL be dereferencable to a string attribute.

elbowMaterial: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of material use in the manufacture of the component

Requirement 105

/req/elbow/elbowmaterial-codelistURI

This optional attribute elbowMaterial SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowmaterial . This value SHALL be dereferencable to a string attribute.

elbowBoundSpecification: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: elbowSpecification; elbowWeight.

Requirement 106

/req/elbow/elbowboundspecification-boundtype

This optional bound attribute elbowBoundSpecification SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 107

/req/elbow/elbowboundspecification-codelistURI

This optional bound attribute elbowBoundSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowboundspecification . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 108

/req/elbow/elbowboundspecification-exclusivity

This optional bound attribute elbowBoundSpecification MAY be populated, or its corresponding set of unbound attributes (elbowSpecification, and elbowWeight) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowSpecification: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the specification and specification date/version of the component. This attribute SHALL NOT be provided if the attribute elbowBoundSpecification is populated for reasons of disambiguation.

Requirement 109

/req/elbow/elbowspecification-codelistURI

This optional unbound attribute elbowSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowspecification . This value SHALL be dereferencable to a string attribute.

Requirement 110

/req/elbow/elbowspecification-exclusivity

This optional unbound attribute elbowSpecification MAY be populated, or its corresponding bound attribute elbowBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowWeight: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the weight characteristics of the component. This attribute SHALL NOT be provided if the attribute elbowBoundSpecification is populated for reasons of disambiguation.

Requirement 111

/req/elbow/elbowweight-codelistURI

This optional unbound attribute elbowWeight SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowweight . This value SHALL be dereferencable to a string attribute.

Requirement 112

/req/elbow/elbowweight-exclusivity

This optional unbound attribute elbowWeight MAY be populated, or its corresponding bound attribute elbowBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowBoundDimension: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: elbowAngle; elbowNominalPipeSize; elbowOutsideDiameter; elbowWallThickness.

Requirement 113

/req/elbow/elbowbounddimension-boundtype

This optional bound attribute elbowBoundDimension SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 114

/req/elbow/elbowbounddimension-codelistURI

This optional bound attribute elbowBoundDimension SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowbounddimension . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 115

/req/elbow/elbowbounddimension-exclusivity

This optional bound attribute elbowBoundDimension MAY be populated, or its corresponding set of unbound attributes (elbowAngle, elbowNominalPipeSize, elbowOutsideDiameter, and elbowWallThickness) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowAngle: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the angle of the bend in the component. This attribute SHALL NOT be provided if the attribute elbowBoundDimension is populated for reasons of disambiguation.

Requirement 116

/req/elbow/elbowangle-codelistURI

This optional unbound attribute elbowAngle SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowangle . This value SHALL be dereferencable to a string attribute.

Requirement 117

/req/elbow/elbowangle-exclusivity

This optional unbound attribute elbowAngle MAY be populated, or its corresponding bound attribute elbowBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowNominalPipeSize: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the nominal pipe size of the component. This attribute SHALL NOT be provided if the attribute elbowBoundDimension is populated for reasons of disambiguation.

Requirement 118

/req/elbow/elbownominalpipesize-codelistURI

This optional unbound attribute elbowNominalPipeSize SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbownominalpipesize . This value SHALL be dereferencable to a string attribute.

Requirement 119

/req/elbow/elbownominalpipesize-exclusivity

This optional unbound attribute elbowNominalPipeSize MAY be populated, or its corresponding bound attribute elbowBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowOutsideDiameter: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the outside diameter of the component. This attribute SHALL NOT be provided if the attribute elbowBoundDimension is populated for reasons of disambiguation.

Requirement 120

/req/elbow/elbowoutsidediameter-codelistURI

This optional unbound attribute elbowOutsideDiameter SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowoutsidediameter . This value SHALL be dereferencable to a string attribute.

Requirement 121

/req/elbow/elbowoutsidediameter-exclusivity

This optional unbound attribute elbowOutsideDiameter MAY be populated, or its corresponding bound attribute elbowBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

elbowWallThickness: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the wall thickness of the component. This attribute SHALL NOT be provided if the attribute elbowBoundDimension is populated for reasons of disambiguation.

Requirement 122

/req/elbow/elbowwallthickness-codelistURI

This optional unbound attribute elbowWallThickness SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/elbowwallthickness . This value SHALL be dereferencable to a string attribute.

Requirement 123

/req/elbow/elbowwallthickness-exclusivity

This optional unbound attribute elbowWallThickness MAY be populated, or its corresponding bound attribute elbowBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

7.5.1.12. Flange Class Requirements Class (Normative)

Requirements Class

/req/flange

Target type

Encoding of conceptual model

Name

PMLComponent Flange

Dependency

/req/pmlcomponent

Requirement 124

/req/flange/flangemanufacturer-codelistURIexception

Requirement 125

/req/flange/flangetype-codelistURI

Requirement 126

/req/flange/flangetype-exclusivity

Requirement 127

/req/flange/flangematerial-codelistURI

Requirement 128

/req/flange/flangeboundspecification-boundtype

Requirement 129

/req/flange/flangeboundspecification-codelistURI

Requirement 130

/req/flange/flangeboundspecification-exclusivity

Requirement 131

/req/flange/flangespecification-codelistURI

Requirement 132

/req/flange/flangespecification-exclusivity

Requirement 133

/req/flange/flangeclass-codelistURI

Requirement 134

/req/flange/flangeclass-exclusivity

Requirement 135

/req/flange/flangenominalpipesize-codelistURI

Requirement 136

/req/flange/flangeinsulationtype-codelistURI

The Flange Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 19.

image
Figure 19. Flange Requirements Class

The Flange Class contains attributes and relationships to other classes:

flangeManufacturer: An optional attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 124

/req/flange/flangemanufacturer-codelistURIexception

[Recommendation] This optional attribute flangeManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangemanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

flangeType: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of flange component

Requirement 125

/req/flange/flangetype-codelistURI

This optional unbound attribute flangeType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangetype . This value SHALL be dereferencable to a string attribute.

Requirement 126

/req/flange/flangetype-exclusivity

This optional unbound attribute flangeType MAY be populated, or its corresponding bound attribute flangeBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

flangeMaterial: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of material use in the manufacture of the component

Requirement 127

/req/flange/flangematerial-codelistURI

This optional attribute flangeMaterial SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangematerial . This value SHALL be dereferencable to a string attribute.

flangeBoundSpecification: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: flangeType; flangeSpecification; flangeClass.

Requirement 128

/req/flange/flangeboundspecification-boundtype

This optional bound attribute flangeBoundSpecification SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 129

/req/flange/flangeboundspecification-codelistURI

This optional bound attribute flangeBoundSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangeboundspecification . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 130

/req/flange/flangeboundspecification-exclusivity

This optional bound attribute flangeBoundSpecification MAY be populated, or its corresponding set of unbound attributes (flangeType, flangeSpecification, and flangeClass) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

flangeSpecification: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the specification and specification date/version of the component. This attribute SHALL NOT be provided if the attribute flangeBoundSpecification is populated for reasons of disambiguation.

Requirement 131

/req/flange/flangespecification-codelistURI

This optional unbound attribute flangeSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangespecification . This value SHALL be dereferencable to a string attribute.

Requirement 132

/req/flange/flangespecification-exclusivity

This optional unbound attribute flangeSpecification MAY be populated, or its corresponding bound attribute flangeBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

flangeClass: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the class of the flange component. This attribute SHALL NOT be provided if the attribute flangeBoundSpecification is populated for reasons of disambiguation.

Requirement 133

/req/flange/flangeclass-codelistURI

This optional unbound attribute flangeClass SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangeclass . This value SHALL be dereferencable to a string attribute.

Requirement 134

/req/flange/flangeclass-exclusivity

This optional unbound attribute flangeClass MAY be populated, or its corresponding bound attribute flangeBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

flangeNominalPipeSize: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the nominal pipe size of the component

Requirement 135

/req/flange/flangenominalpipesize-codelistURI

This optional attribute flangeNominalPipeSize SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangenominalpipesize . This value SHALL be dereferencable to a string attribute.

flangeInsulationType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of insulation used in the component

Requirement 136

/req/flange/flangeinsulationtype-codelistURI

This optional attribute flangeInsulationType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/flangeinsulationtype . This value SHALL be dereferencable to a string attribute.

7.5.1.13. Launcherreceiver Class Requirements Class (Normative)

Requirements Class

/req/launcherreceiver

Target type

Encoding of conceptual model

Name

PMLComponent Launcherreceiver

Dependency

/req/pmlcomponent

Requirement 137

/req/launcherreceiver/launcherreceivermanufacturer-codelistURIexception

Requirement 138

/req/launcherreceiver/launcherreceivermanufacturer-exclusivity

Requirement 139

/req/launcherreceiver/launcherreceivertype-codelistURI

Requirement 140

/req/launcherreceiver/launcherreceiverboundmanufacturer-boundtype

Requirement 141

/req/launcherreceiver/launcherreceiverboundmanufacturer-codelistURI

Requirement 142

/req/launcherreceiver/launcherreceiverboundmanufacturer-exclusivity

Requirement 143

/req/launcherreceiver/launcherreceiverproductname-codelistURIexception

Requirement 144

/req/launcherreceiver/launcherreceiverproductname-exclusivity

Requirement 145

/req/launcherreceiver/launcherreceivermodelnumber-codelistURIexception

Requirement 146

/req/launcherreceiver/launcherreceivermodelnumber-exclusivity

Requirement 147

/req/launcherreceiver/launcherreceiverclass-codelistURI

The Launcherreceiver Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 20.

image
Figure 20. Launcherreceiver Requirements Class

The Launcherreceiver Class contains attributes and relationships to other classes:

launcherreceiverManufacturer: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 137

/req/launcherreceiver/launcherreceivermanufacturer-codelistURIexception

[Recommendation] This optional attribute launcherreceiverManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/launcherreceivermanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this substandard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 138

/req/launcherreceiver/launcherreceivermanufacturer-exclusivity

This optional unbound attribute launcherreceiverManufacturer MAY be populated, or its corresponding bound attribute launcherreceiverBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

launcherreceiverType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of launcherreceiver component

Requirement 139

/req/launcherreceiver/launcherreceivertype-codelistURI

This optional attribute launcherreceiverType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/launcherreceivertype . This value SHALL be dereferencable to a string attribute.

launcherreceiverBoundManufacturer: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: launcherreceiverManufacturer; launcherreceiverProductName; launcherreceiverModelNumber.

Requirement 140

/req/launcherreceiver/launcherreceiverboundmanufacturer-boundtype

This optional bound attribute launcherreceiverBoundMnaufacturer SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 141

/req/launcherreceiver/launcherreceiverboundmanufacturer-codelistURI

This optional bound attribute launcherreceiverBoundManufacturer SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/launcherreceiverboundmanufacturer . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 142

/req/launcherreceiver/launcherreceiverboundmanufacturer-exclusivity

This optional bound attribute launcherreceiverBoundManufacturer MAY be populated, or its corresponding set of unbound attributes (launcherreceiverManufacturer, launcherreceiverProductName, and launcherreceiverModelNumber) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

launcherreceiverProductName: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the product name of the component. This attribute SHALL NOT be provided if the attribute launcherreceiverBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 143

/req/launcherreceiver/launcherreceiverproductname-codelistURIexception

[Recommendation] This optional attribute launcherreceiverProductName SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/launcherreceiverproductname . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 144

/req/launcherreceiver/launcherreceiverproductname-exclusivity

This optional unbound attribute launcherreceiverProductName MAY be populated, or its corresponding bound attribute launcherreceiverBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

launcherreceiverModelNumber: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the model number of the component. This attribute SHALL NOT be provided if the attribute launcherreceiverBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 145

/req/launcherreceiver/launcherreceivermodelnumber-codelistURIexception

[Recommendation] This optional attribute launcherreceiverModelNumber SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/launcherreceivermodelnumber . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 146

/req/launcherreceiver/launcherreceivermodelnumber-exclusivity

This optional unbound attribute launcherreceiverModelNumber MAY be populated, or its corresponding bound attribute launcherreceiverBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

launcherreceiverSerialNumber: An optional string attribute that defines a unique identification number established by the component manufacturer

launcherreceiverName: An optional string attribute that defines a unique identification number established by the component manufacturer

launcherreceiverClass: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the class of the launcherreceiver component

Requirement 147

/req/launcherreceiver/launcherreceiverclass-codelistURI

This optional attribute launcherreceiverClass SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/launcherreceiverclass . This value SHALL be dereferencable to a string attribute.

7.5.1.14. Linepipe Class Requirements Class (Normative)

Requirements Class

/req/linepipe

Target type

Encoding of conceptual model

Name

PMLComponent Linepipe

Dependency

/req/pmlcomponent

Requirement 148

/req/linepipe/linepipemanufacturer-codelistURIexception

Requirement 149

/req/linepipe/linepipetype-codelistURI

Requirement 150

/req/linepipe/linepipematerial-codelistURI

Requirement 151

/req/linepipe/linepipeboundspecification-boundtype

Requirement 152

/req/linepipe/linepipeboundspecification-codelistURI

Requirement 153

/req/linepipe/linepipeboundspecification-exclusivity

Requirement 154

/req/linepipe/linepipespecification-codelistURI

Requirement 155

/req/linepipe/linepipespecification-exclusivity

Requirement 156

/req/linepipe/linepipeyieldstrength-codelistURI

Requirement 157

/req/linepipe/linepipeyieldstrength-exclusivity

Requirement 158

/req/linepipe/linepipegrade-codelistURI

Requirement 159

/req/linepipe/linepipegrade-exclusivity

Requirement 160

/req/linepipe/linepipebounddimension-boundtype

Requirement 161

/req/linepipe/linepipebounddimension-codelistURI

Requirement 162

/req/linepipe/linepipebounddimension-exclusivity

Requirement 163

/req/linepipe/linepipenominalpipesize-codelistURI

Requirement 164

/req/linepipe/linepipeoutsidediameter-codelistURI

Requirement 165

/req/linepipe/linepipeoutsidediameter-exclusivity

Requirement 166

/req/linepipe/linepipewallthickness-codelistURI

Requirement 167

/req/linepipe/linepipewallthickness-exclusivity

Requirement 168

/req/linepipe/linepipebendtype-codelistURI

Requirement 169

/req/linepipe/linepipeseamweldtype-codelistURI

Requirement 170

/req/linepipe/linepipeseamweldorientation-codelistURI

Requirement 171

/req/linepipe/linepipeseamweldorientation-componentmeasuredfrom

Requirement 172

/req/linepipe/linepipepositionvertical-codelistURI

Requirement 173

/req/linepipe/linepipecoverdepthminimum-uom

The Linepipe Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 21.

image
Figure 21. Linepipe Requirements Class

The Linepipe Class contains attributes and relationships to other classes:

linepipeManufacturer: An optional attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 148

/req/linepipe/linepipemanufacturer-codelistURIexception

[Recommendation] This optional attribute linepipeManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipemanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

linepipeType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of linepipe component

Requirement 149

/req/linepipe/linepipetype-codelistURI

This optional attribute linepipeType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipetype . This value SHALL be dereferencable to a string attribute.

linepipeMaterial: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of material use in the manufacture of the component

Requirement 150

/req/linepipe/linepipematerial-codelistURI

This optional attribute linepipeMaterial SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipematerial . This value SHALL be dereferencable to a string attribute.

linepipeBoundSpecification: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: linepipeSpecification; linepipeYieldStrength; linepipeGrade.

Requirement 151

/req/linepipe/linepipeboundspecification-boundtype

This optional bound attribute linepipeBoundSpecification SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 152

/req/linepipe/linepipeboundspecification-codelistURI

This optional bound attribute linepipeBoundSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipeboundspecification . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 153

/req/linepipe/linepipeboundspecification-exclusivity

This optional bound attribute linepipeBoundSpecification MAY be populated, or its corresponding set of unbound attributes (linepipeSpecification, linepipeYieldStrength, and linepipeGrade) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeSpecification: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value used to define the specification and specification date/version of the component. This attribute SHALL NOT be provided if the attribute linepipeBoundSpecification is populated for reasons of disambiguation.

Requirement 154

/req/linepipe/linepipespecification-codelistURI

This optional unbound attribute linepipeSpecification SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipespecification . This value SHALL be dereferencable to a string attribute.

Requirement 155

/req/linepipe/linepipespecification-exclusivity

This optional unbound attribute linepipeSpecification MAY be populated, or its corresponding bound attribute linepipeBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeYieldStrength: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value that defines the rated yield strength of the component. This attribute SHALL NOT be provided if the attribute linepipeBoundSpecification is populated for reasons of disambiguation.

Requirement 156

/req/linepipe/linepipeyieldstrength-codelistURI

This optional unbound attribute linepipeYieldStrength SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipeyieldstrength . This value SHALL be dereferencable to a string attribute.

Requirement 157

/req/linepipe/linepipeyieldstrength-exclusivity

This optional unbound attribute linepipeYieldStrength MAY be populated, or its corresponding bound attribute linepipeBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeGrade: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value that defines the grade specification of the component. This attribute SHALL NOT be provided if the attribute linepipeBoundSpecification is populated for reasons of disambiguation.

Requirement 158

/req/linepipe/linepipegrade-codelistURI

This optional unbound attribute linepipeGrade SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipegrade . This value SHALL be dereferencable to a string attribute.

Requirement 159

/req/linepipe/linepipegrade-exclusivity

This optional unbound attribute linepipeGrade MAY be populated, or its corresponding bound attribute linepipeBoundSpecification MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeBoundDimension: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: linepipeNominalPipeSize; linepipeOutsideDiameter; linepipeWallThickness.

Requirement 160

/req/linepipe/linepipebounddimension-boundtype

This optional bound attribute linepipeBoundDimension SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 161

/req/linepipe/linepipebounddimension-codelistURI

This optional bound attribute linepipeBoundDimension SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipebounddimension . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 162

/req/linepipe/linepipebounddimension-exclusivity

This optional bound attribute linepipeBoundDimension MAY be populated, or its corresponding set of unbound attributes (linepipeNominalPipeSize, linepipeOutsideDiameter, and linepipeWallThickness) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeNominalPipeSize: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the nominal pipe size of the component. This attribute SHALL NOT be provided if the attribute linepipeBoundDimension is populated for reasons of disambiguation.

Requirement 163

/req/linepipe/linepipenominalpipesize-codelistURI

This optional unbound attribute linepipeNominalPipeSize SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipenominalpipesize . This value SHALL be dereferencable to a string attribute.

linepipeOutsideDiameter: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the outside diameter of the component. This attribute SHALL NOT be provided if the attribute linepipeBoundDimension is populated for reasons of disambiguation.

Requirement 164

/req/linepipe/linepipeoutsidediameter-codelistURI

This optional unbound attribute linepipeOutsideDiameter SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipeoutsidediameter . This value SHALL be dereferencable to a string attribute.

Requirement 165

/req/linepipe/linepipeoutsidediameter-exclusivity

This optional unbound attribute linepipeOutsideDiameter MAY be populated, or its corresponding bound attribute linepipeBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeWallThickness: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the wall thickness of the component. This attribute SHALL NOT be provided if the attribute linepipeBoundDimension is populated for reasons of disambiguation.

Requirement 166

/req/linepipe/linepipewallthickness-codelistURI

This optional unbound attribute linepipeWallThickness SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipewallthickness . This value SHALL be dereferencable to a string attribute.

Requirement 167

/req/linepipe/linepipewallthickness-exclusivity

This optional unbound attribute linepipeWallThickness MAY be populated, or its corresponding bound attribute linepipeBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

linepipeBendType: An optional value that, if populated, SHALL be dereferenceable to define a string value containing the type of bend (if any) in the component

Requirement 168

/req/linepipe/linepipebendtype-codelistURI

This optional attribute linepipeBendType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipebendtype . This value SHALL be dereferencable to a string attribute.

linepipeSeamWeldType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of seam weld used in the manufacturer of the component. This defines the girth weld that was made along the length of the linepipe during its construction from a flat piece of sheet metal.

Requirement 169

/req/linepipe/linepipeseamweldtype-codelistURI

This optional unbound attribute linepipeSeamWeldType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipeseamweldtype . This value SHALL be dereferencable to a string attribute.

linepipeSeamWeldOrientation: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the orientation angle of seam weld of the component when installed. If this attribute is populated, it shall provide a ComponentMeasuredFrom value that contains the unique identification of the component whose vantage point is used as a reference to indicate the direction of the orientation angle.

Requirement 170

/req/linepipe/linepipeseamweldorientation-codelistURI

This optional attribute linepipeSeamWeldOrientation SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipeseamweldorientation . This value SHALL be dereferencable to a string attribute.

Requirement 171

/req/linepipe/linepipeseamweldorientation-componentmeasuredfrom

This optional attribute utilizes a complex data type that supports the inclusion of an “componentmeasuredfrom” sub-attribute value that contains the unique identification of the component whose vantage point is used as a reference point to indicate the direction of the orientation angleIf this attribute is populated, it SHALL also populate the ComponentMeasuredFrom sub-attribute.

linepipePositionVertical: An optional attribute that, if populated, SHALL be dereferenceable to a string value containing the vertical position of the component relative to natural ground as it was installed (such as On Ground, Below Surface, and Elevated or Suspended). This attribute provides 3-dimension context to 2-dimensional data to understand the relationship of the component to ground elevation.

Requirement 172

/req/linepipe/linepipepositionvertical-codelistURI

This optional attribute linepipePositionVertical SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/linepipepositionvertical . This value SHALL be dereferencable to a string attribute.

linepipeCoverDepthMinimum: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the minimum depth of ground cover required by the manufacturer of the component. If this attribute is populated, a units of measure sub-attribute value SHALL also be populated.

Requirement 173

/req/linepipe/linepipecoverdepthminimum-uom

If this optional attribute linepipeCoverDepthMinimum is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

7.5.1.15. Meter Class Requirements Class (Normative)

Requirements Class

/req/meter

Target type

Encoding of conceptual model

Name

PMLComponent Meter

Dependency

/req/pmlcomponent

Requirement 174

/req/meter/metermanufacturer-codelistURIexception

Requirement 175

/req/meter/metermanufacturer-exclusivity

Requirement 176

/req/meter/metertype-codelistURI

Requirement 177

/req/meter/meternominalpipesize-codelistURI

Requirement 178

/req/meter/meterboundmanufacturer-boundtype

Requirement 179

/req/meter/meterboundmanufacturer-codelistURI

Requirement 180

/req/meter/meterboundmanufacturer-exclusivity

Requirement 181

/req/meter/meterproductname-codelistURIexception

Requirement 182

/req/meter/meterproductname-exclusivity

Requirement 183

/req/meter/metermodelnumber-codelistURIexception

Requirement 184

/req/meter/metermodelnumber-exclusivity

Requirement 185

/req/meter/meterflowrateminimum-uom

Requirement 186

/req/meter/meterflowratemaximum-uom

The Meter Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 22.

image
Figure 22. Meter Requirements Class

The Meter Class contains attributes and relationships to other classes:

meterManufacturer: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 174

/req/meter/metermanufacturer-codelistURIexception

[Recommendation] This optional attribute meterManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/metermanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 175

/req/meter/metermanufacturer-exclusivity

This optional unbound attribute meterManufacturer MAY be populated, or its corresponding bound attribute meterBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

meterType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of meter component

Requirement 176

/req/meter/metertype-codelistURI

This optional unbound attribute meterType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/metertype . This value SHALL be dereferencable to a string attribute.

meterNumber: An optional string attribute that defines a unique identification number for the component established by the pipeline operator

meterNominalPipeSize: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the nominal pipe size of the component

Requirement 177

/req/meter/meternominalpipesize-codelistURI

This optional unbound attribute meterNominalPipeSize SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/meternominalpipesize . This value SHALL be dereferencable to a string attribute.

meterBoundManufacturer: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: meterManufacturer; meterProductName; meterModelNumber.

Requirement 178

/req/meter/meterboundmanufacturer-boundtype

This optional bound attribute meterBoundMnaufacturer SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 179

/req/meter/meterboundmanufacturer-codelistURI

This optional bound attribute meterBoundManufacturer SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/meterboundmanufacturer . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 180

/req/meter/meterboundmanufacturer-exclusivity

This optional bound attribute meterBoundManufacturer MAY be populated, or its corresponding set of unbound attributes (meterManufacturer, meterProductName, and meterModelNumber) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

meterProductName: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the product name of the component. This attribute SHALL NOT be provided if the attribute meterBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 181

/req/meter/meterproductname-codelistURIexception

[Recommendation] This optional attribute meterProductName SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/meterproductname . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 182

/req/meter/meterproductname-exclusivity

This optional unbound attribute meterProductName MAY be populated, or its corresponding bound attribute meterBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

meterModelNumber: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the model number of the component. This attribute SHALL NOT be provided if the attribute meterBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 183

/req/meter/metermodelnumber-codelistURIexception

[Recommendation] This optional attribute meterModelNumber SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/metermodelnumber . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 184

/req/meter/metermodelnumber-exclusivity

This optional unbound attribute meterModelNumber MAY be populated, or its corresponding bound attribute meterBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

meterSerialNumber: An optional string attribute that defines a unique identification number established by the component manufacturer.

meterFlowRateMinimum: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the minimum product flow rate as determined by the manufacturer of the component. If this attribute is populated, a units of measure sub-attribute value SHALL also be populated.

Requirement 185

/req/meter/meterflowrateminimum-uom

If this optional attribute meterFlowRateMinimum is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

meterFlowRateMaximum: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the maximum product flow rate as determined by the manufacturer of the component. If this attribute is populated, a units of measure sub-attribute value SHALL also be populated.

Requirement 186

/req/meter/meterflowratemaximum-uom

If this optional attribute meterFlowRateMaximum is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

7.5.1.16. Pump Class Requirements Class (Normative)

Requirements Class

/req/pump

Target type

Encoding of conceptual model

Name

PMLComponent Pump

Dependency

/req/pmlcomponent

Requirement 187

/req/pump/pumpmanufacturer-codelistURIexception

Requirement 188

/req/pump/pumpmanufacturer-exclusivity

Requirement 189

/req/pump/pumptype-codelistURI

Requirement 190

/req/pump/pumpbounddimension-boundtype

Requirement 191

/req/pump/pumpbounddimension-codelistURI

Requirement 192

/req/pump/pumpbounddimension-exclusivity

Requirement 193

/req/pump/pumpdiameteroutlet-codelistURI

Requirement 194

/req/pump/pumpdiameteroutlet-exclusivity

Requirement 195

/req/pump/pumpdiameterinlet-codelistURI

Requirement 196

/req/pump/pumpdiameterinlet-exclusivity

Requirement 197

/req/pump/pumpdiameterimpeller-codelistURI

Requirement 198

/req/pump/pumpdiameterimpeller-exclusivity

Requirement 199

/req/pump/pumpboundmanufacturer-boundtype

Requirement 200

/req/pump/pumpboundmanufacturer-codelistURI

Requirement 201

/req/pump/pumpboundmanufacturer-exclusivity

Requirement 202

/req/pump/pumpproductname-codelistURIexception

Requirement 203

/req/pump/pumpproductname-exclusivity

Requirement 204

/req/pump/pumpmodelnumber-codelistURIexception

Requirement 205

/req/pump/pumpmodelnumber-exclusivity

Requirement 206

/req/pump/pumpfueltype-codelistURI

Requirement 207

/req/pump/pumppowerrating-uom

Requirement 208

/req/pump/pumpratedflow-uom

Requirement 209

/req/pump/pumppressuresuction-uom

Requirement 210

/req/pump/pumppressuredischarge-uom

The Pump Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 23.

image
Figure 23. Pump Requirements Class

The Pump Class contains attributes and relationships to other classes:

pumpManufacturer: An optional unbound attribute that, if populated, SHALL be dereferenceable to a string value containing the name of the company that manufactured the component. The use of an external reference code list (controlled vocabulary) is intended to provide authoritative data that enhances application interoperability. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 187

/req/pump/pumpmanufacturer-codelistURIexception

[Recommendation] This optional attribute pumpManufacturer SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpmanufacturer . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 188

/req/pump/pumpmanufacturer-exclusivity

This optional unbound attribute pumpManufacturer MAY be populated, or its corresponding bound attribute pumpBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value containing the type of pump component

Requirement 189

/req/pump/pumptype-codelistURI

This optional unbound attribute pumpType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumptype . This value SHALL be dereferencable to a string attribute.

pumpBoundDimension: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: pumpDiameterOutlet; pumpDiameterInlet; pumpDiameterImpeller.

Requirement 190

/req/pump/pumpbounddimension-boundtype

This optional bound attribute pumpBoundDimension SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 191

/req/pump/pumpbounddimension-codelistURI

This optional bound attribute pumpBoundDimension SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpbounddimension . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 192

/req/pump/pumpbounddimension-exclusivity

This optional bound attribute pumpBoundDimension MAY be populated, or its corresponding set of unbound attributes (pumpDiameterOutlet, pumpDiameterInlet, pumpDiameterImpeller) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpDiameterOutlet: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the outlet diameter size of the component. This attribute SHALL NOT be provided if the attribute pumpBoundDimension is populated for reasons of disambiguation.

Requirement 193

/req/pump/pumpdiameteroutlet-codelistURI

This optional unbound attribute pumpDiameterOutlet SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpdiameteroutlet . This value SHALL be dereferencable to a string attribute.

Requirement 194

/req/pump/pumpdiameteroutlet-exclusivity

This optional unbound attribute pumpDiameterOutlet MAY be populated, or its corresponding bound attribute pumpBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpDiameterInlet: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the inlet diameter size of the component. This attribute SHALL NOT be provided if the attribute pumpBoundDimension is populated for reasons of disambiguation.

Requirement 195

/req/pump/pumpdiameterinlet-codelistURI

This optional unbound attribute pumpDiameterInlet SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpdiameterinlet . This value SHALL be dereferencable to a string attribute.

Requirement 196

/req/pump/pumpdiameterinlet-exclusivity

This optional unbound attribute pumpDiameterInlet MAY be populated, or its corresponding bound attribute pumpBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpDiameterImpeller: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the impeller diameter size of the component. This attribute SHALL NOT be provided if the attribute pumpBoundDimension is populated for reasons of disambiguation..

Requirement 197

/req/pump/pumpdiameterimpeller-codelistURI

This optional unbound attribute pumpDiameterImpeller SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpdiameterimpeller . This value SHALL be dereferencable to a string attribute.

Requirement 198

/req/pump/pumpdiameterimpeller-exclusivity

This optional unbound attribute pumpDiameterImpeller MAY be populated, or its corresponding bound attribute pumpBoundDimension MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpBoundManufacturer: An optional bound attribute that, if populated, SHALL be dereferenceable to define a bound combination of attributes as a concatenated string with each attribute being separated by semicolons (;). An alternate method is provided (below) for defining each of these attributes in unbound form. Only the bound type or unbound types may be populated, but NOT BOTH. This bound form of attributes represents the highest pedigree of data standardization and is considered best practice, as it provides a mechanism for identifying valid combinations of attributes. This bound set of values includes the following attributes: pumpManufacturer; pumpProductName; pumpModelNumber.

Requirement 199

/req/pump/pumpboundmanufacturer-boundtype

This optional bound attribute pumpBoundManufacturer SHALL utilize the PipelineML boundType constructThis construct support a combination of attributes that are tightly bound together for the purpose of defining valid combinations of attributes using a single attribute valueA bound data type SHALL be dereferencable to a concatenated string of attributes separated by semicolons.

Requirement 200

/req/pump/pumpboundmanufacturer-codelistURI

This optional bound attribute pumpBoundManufacturer SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpboundmanufacturer . This value shall be dereferencable to a set of strongly bound string attributes separated by semicolons.

Requirement 201

/req/pump/pumpboundmanufacturer-exclusivity

This optional bound attribute pumpBoundManufacturer MAY be populated, or its corresponding set of unbound attributes (pumpManufacturer, pumpProductName, and pumpModelNumber) MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpProductName: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the product name of the component. This attribute SHALL NOT be provided if the attribute pumpBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 202

/req/pump/pumpproductname-codelistURIexception

[Recommendation] This optional attribute pumpProductName SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpproductname . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 203

/req/pump/pumpproductname-exclusivity

This optional unbound attribute pumpProductName MAY be populated, or its corresponding bound attribute pumpBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpModelNumber: An optional unbound attribute that, if populated, SHALL be dereferenceable to define a string value containing the model number of the component. This attribute SHALL NOT be provided if the attribute pumpBoundManufacturer is populated for reasons of disambiguation. This attribute supports the use of substandard (non-authoritative) data as defined in the othervalue requirement.

Requirement 204

/req/pump/pumpmodelnumber-codelistURIexception

[Recommendation] This optional attribute pumpModelNumber SHOULD utilize the codelistURIexception constructAny value populated for this attribute SHOULD utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpmodelnumber . This value SHOULD be dereferencable to a string attribute. This attribute supports the use of substandard data by using an alternate source to the PipelineML Authoritative Data Governance Body for the unique code value (machine readable value) and the title (human readable value). If a value needs to be represented that is not contained in the PipelineML authoritative code list, an alternative code value MAY be used as a temporary solution, so long as it complies with the following guidelines:

  1. A non-authoritative code value may not be used if an existing authoritative code exists that means the same thing with a variance in wording/phrasing, spelling, word sequence, capitalization, parentheses, or abbreviation. If the meaning of a value closely matches that of an authoritative value, the authoritative value should be used and not an alternate. For example, the value “A.O. Smith” exists as a LinepipeManufacturer value. If someone preferred the value “AO Smith”, this would be considered a spelling variation of an existing code value, and the existing authoritative value should be used.

  2. A non-authoritative code identifier must not match or conflict with an existing authoritative code identifier. For example, the code identifier 3390 is allocated to the meaning “Axial; Dual Stage; 15 Throw; 2 Stroke” in the CompressorBoundType code list. Hence, the code identifier 3390 may not be used to identify a substandard/non-authoritative value. The utilization of a UUID or a database GUID that begins with a non-numeric value (such as “id”, id2673c08c-642f-e711-80ea-0050569E3087) provides a safe mechanism for encoding a unique code identifier.

  3. A non-authoritative code value must be unique in the dataset (a given code identifier can only have a single meaning within a dataset). That is, if a non-authoritative code identifier is used more than once a dataset, its meaning must remain consistent throughout the dataset.

  4. The utilization of this sub-standard construct SHOULD be promptly followed by the submission of the missing value/s to the PipelineML Authoritative Data Governance Body for consideration of inclusion in the authoritative code domain.

  5. If the PipelineML Authoritative Data Governance Body determines that a proposed value is too similar to an existing code value in meaning, all future encodings should utilize the matching existing authoritative code value instead of continuing to encode the proposed alternate.

Requirement 205

/req/pump/pumpmodelnumber-exclusivity

This optional unbound attribute pumpModelNumber MAY be populated, or its corresponding bound attribute pumpBoundManufacturer MAY be populated, but NOT BOTH. This exclusivity requirement is intended to promote disambiquity.

pumpSerialNumber: An optional string attribute that defines a unique identification number established by the component manufacturer

pumpFuelType: An optional attribute that, if populated, SHALL be dereferenceable to define a string value describing the type of fuel used to operate the component

Requirement 206

/req/pump/pumpfueltype-codelistURI

This optional attribute pumpFuelType SHALL utilize the codelistURI constructAny value populated for this attribute SHALL utilize the controlled vocabulary that represents authoritative data, located at https://www.opengis.net/def/pipelineml/1.0/codelists/pumpfueltype . This value SHALL be dereferencable to a string attribute.

pumpPowerRating: An optional measurement made by the manufacturer that defines the amount of power the pump is rated to produce. If this attribute is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 207

/req/pump/pumppowerrating-uom

If this optional attribute pumpPowerRating is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

pumpRatedFlow: An optional measurement made by the manufacturer that defines the rate of product flow the pump is rated to produce. If populated is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 208

/req/pump/pumpratedflow-uom

If this optional attribute pumpRatedFlow is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

pumpPressureSuction: An optional measurement made by the manufacturer that defines the amount of suction the pump is rated to produce. If populated is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 209

/req/pump/pumppressuresuction-uom

If this optional attribute pumpPressureSuction is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

pumpPressureDischarge: An optional measurement made by the manufacturer that defines the amount of pressure the pump is rated to discharge. If populated is populated with a value, a units-of-measure sub-attribute SHALL also be provided.

Requirement 210

/req/pump/pumppressuredischarge-uom

If this optional attribute pumpPressureDischarge is provided, a units-of-measure sub-attribute (uom) SHALL be provided that indicates the appropriate units of measure used for the provided value.

7.5.1.17. Reducer Class Requirements Class (Normative)

Requirements Class

/req/reducer

Target type

Encoding of conceptual model

Name

PMLComponent Reducer

Dependency

/req/pmlcomponent

Requirement 211

/req/reducer/reducermanufacturer-codelistURIexception

Requirement 212

/req/reducer/reducertype-codelistURI

Requirement 213

/req/reducer/reducermaterial-codelistURI

Requirement 214

/req/reducer/reducerboundspecification-boundtype

Requirement 215

/req/reducer/reducerboundspecification-codelistURI

Requirement 216

/req/reducer/reducerboundspecification-exclusivity

Requirement 217

/req/reducer/reducerspecification-codelistURI

Requirement 218

/req/reducer/reducerspecification-exclusivity

Requirement 219

/req/reducer/reducerweight-codelistURI

Requirement 220

/req/reducer/reducerweight-exclusivity

Requirement 221

/req/reducer/reducerbounddimension-boundtype

Requirement 222

/req/reducer/reducerbounddimension-codelistURI

Requirement 223

/req/reducer/reducerbounddimension-exclusivity

Requirement 224

/req/reducer/reducernominalpipesizeinlet-codelistURI

Requirement 225

/req/reducer/reducernominalpipesizeinlet-exclusivity

Requirement 226

/req/reducer/reducernominalpipesizeoutlet-codelistURI

Requirement 227

/req/reducer/reducernominalpipesizeoutlet-exclusivity

Requirement 228

/req/reducer/reduceroutsidediameterinlet-codelistURI

Requirement 229

/req/reducer/reduceroutsidediameterinlet-exclusivity

Requirement 230

/req/reducer/reduceroutsidediameteroutlet-codelistURI

Requirement 231

/req/reducer/reduceroutsidediameteroutlet-exclusivity

Requirement 232

/req/reducer/reducerwallthicknessinlet-codelistURI

Requirement 233

/req/reducer/reducerwallthicknessinlet-exclusivity

Requirement 234

/req/reducer/reducerwallthicknessoutlet-codelistURI

Requirement 235

/req/reducer/reducerwallthicknessoutlet-exclusivity

The Reducer Class is a concrete class and therefore may be encoded into a PipelineML dataset. This class contains classes and attributes as shown in Figure 24.