tech looking blue background with ISS logo on the righthand side

Understanding Primitives

Explaining S-Series Primitives Using a Part Example

July 23, 2024

An S Series Primitive is an attribute data type that contains additional information, called characterizations, about the particular data attribute value. The definition of a primitive from S3000L.org states:

S-Series primitives … are different from those data types typically used in other data models, [for example], integer, real, and string. In order to create a richer data model, a set of more complex data types has been defined. The primary purpose for these S-Series primitives is to allow for further characterizations of attribute values in order to record valuable metadata for each value. These characterizations are defined to support [for example], recording multiple values over time, keeping values in different languages, etc.

There are several different primitive types within the S-Series specifications. Each primitive type follows the same two core rules: a primitive can store one or more values per attribute and a primitive can have one or more attributes.

A typical database entry for a Part would contain singular data attribute values. In the example below, all three fields would be classified as string data type. However, Part ID and Part Name are both Primitives in S3000L.

table explaining a basic primitive

Both Part ID and Part Name Primitives contain additional metadata for their respective attribute values.

The Part ID field is an Identifier Type primitive. It contains three attributes in S3000L Issue 1.1. These are the ID value and two optional characterizations: an identifier Classification, and a Set by Organization (the organization that ensures the identifier value is unique).

flow chart of Part ID explanation

The Part Name attribute is a Descriptor Type primitive. It contains five attributes including the Description value, a Language classification, and Provided by Organization. The remaining attributes are less commonly used.

flow chart Part Name explanation
Part ID: Identifier

Part ID, as an Identifier Primitive, contains a mandatory ID attribute. It also has an optional Classification and Organization attributes to further characterize the ID value. The example below shows a possible usage of the Part ID Primitive in a well-established project. This single part "business object" has multiple identifiers. Each identifier serves a purpose but are all relevant only to the same part business object.

Part ID: Identifier table

In the example above, the OEM Part Number (GA-0001) may be used by the supplier of this part. The PNO (RGAX01) is used by the contractor of the end item. This contractor sends their data to military customers using the NSN (BGAR17), its NATO Stock Number. All these identifiers still refer to the same part business object and have one entry in the support analysis database.

Part Name: Descriptor

Part Name, as a Descriptor Type, has five components. The Description (the name of the part business object in this example), Language, and Provided by Organization are the shown in this example.

Part Name: Descriptor table

In the example above, the contractor of the end item may use the English name (Description) internally and when sending their data to most military customers. The German language descriptor value may be used for information sent to a German customer through a Data Module generated from the S3000L data. A variant of this end item may be sold in South Korea and would use the Korean language translation in this case.

The diagram below uses the same radio communication system structure as the Classical Assignment diagram. Notice that Indenture Level F for the Latch Assembly uses the same LCN nomenclature for all its entries.

Primary Values

A Primary Value is the set of Primitive attribute values selected as the default to view and transmit. S1000D for example only utilizes a single set of attribute values within Data Modules. All other attribute values are ignored. In other words, pick one to send.

Note: The concept of a "primary primitive type value" is specific to the ISS implementation of the S Series schemas.

As an example, a contractor is sending a Data Module to a NATO military customer. In this case, they would select the primary values below to include in their Data Modules.

table of an example of the primary values that would be sent to a NATO military customer

The NATO Stock Number is used as the Part ID with the English language selected for the Part Name. German customers would likely use the same Part ID attribute value but replace the Part Name with the German language, as shown below.

table of an example of the primary values that would be sent to a German-speaking NATO military customer

A Korean customer may have no interest in NATO part numbers. In this case, the contractor uses their internal part number designation, combined with the Korean Language attribute for Part Name.

table of an example of the primary values that would be sent to a Korean-speaking customer using the internal part number
Conclusion

Utilizing Primitive data types can reduce the amount of data within a data set by having multiple values assigned to the same business object. This also allows one dataset to support multiple uses of the data, especially useful for co-manufactured products and multi-national sales programs.

As shown in the Part example above, a single Part record can have a combination of part numbers and part names associated to it, all within the same record. However, selecting which value to distribute, and to whom, requires a managed use of the optional characterization values of the primitive data values.