4.4.1. Base PDEF Object

PDEF is built using JSON objects with some common members. Example BasePDEFObject

An example Base PDEF Object reads:

  "pdef_id": "cdb02894-17ae-48a1-aab4-ac01877cca2f",
  "pdef_type": "weld",
  "meta_data": {},
  "additional_data": {}
} pdef_id

pdef_id is the unique Object ID.

It is used to allocate a unique identifier to all objects within the perimeter and context of the PDEF Dataset. It is used as primary key within the PDEF Dataset to represent relations between objects using Reference Relations.


Strictly speaking, since objects are stored in Collections, the pdef_id must be unique only within the perimeter of the exchanged objects of same pdef_type, although it is recommended to seek uniqueness in a broader context.

RFC 4122 defines a Uniform Resource Name namespace for UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits long, and requires no central registration process. PDEF recommends Users to generate v4 UUID strings, although any string of characters is permitted. For example, some Users may use in-house convention to have natural keys as identifiers and use them as pdef_id.

For physical objects described in the PDEF Dataset (eg an Anode), the pdef_id is not necessarily the part identifier. They can be equal or differ. Generally, manufacturers have their own stamping and numbering conventions for serial numbers and part numbers. For such data, the PDEF JSON schema provides specific part_number and serial_number members.

The question was raised whether the selection of UUID v4 would guarantee unicity in the case of PDEF. This question can be treated by trying to estimate a maximum probability of collision between two pdef_id keys, within a unique PDEF Dataset. An attempt at such calculation found such probability to be several orders of magnitude less than 10^-12. For comparison purpose, the probability of collision of finger prints is estimated to 10^-11. pdef_type

pdef_type is a member that maps to keywords that refers to the corresponding classes of the PDEF Objects.

This allows explicit typing and therefore makes parsing algorithms very efficient. additional_data

See Additional Data section. meta_data

See MetaData Section. part_number

part_number is an optional member provided for physical objects, such as Anode, BarePipe.

A part number is an identifier of a part design (independent of its instantiations), as opposed to a serial number, see serial_number. serial_number

serial_number is an optional member provided for physical objects, such as Anode, BarePipe.

A serial number is a unique identifier of a particular instantiation of that part design. The part design is captured by the part_number member.