Skip to content

Apollo example of identifiying Saturn V using sign and pattern

As introduced in the Apollo 11 Activity Lifecycle, there were a number of key components that made up the whole assembly; the Saturn V rocket assembly (called the Launch Vehicle), the Command and Service Modules, the Lunar Lander and the crew. Each of these parts were referred to informally as done in the last sentence, but for official engineering and operational documentation they were each assigned unique identifiers (LM-5 was the fifth build of the Lunar Lander but the first to be sent to the moon with a human crew). An authoritative source of these identifiers (or designations as NASA called them) for the Apollo-7 to -17 Missions is available here. The Saturn V Launch Vehicle for Apollo-11 was given the identifier of "SA-506". "SA-506" could be used as a surrogate for the identity of the actual launch vehicle in the documents, announcements, nameplates and official records for this particular Launch Vehicle.

The value of having recognizing_language_community

A quick search for the string "SA-506" reveals that many other things have been given the identifier "SA-506", notably a HiFi Integrated Amplifier, an anti-scratch acrylic sheet product, an SSD to USB adapter, and more. In an enterprise (large organisation or business) setting the number of names & identifiers used in a formal setting (plans, technical documents, databases, physical equipment tagging, labels, intranet- and web-sites, etc that can be shared within and between departments, suppliers, customers, partners, etc) can be significant. Keeping track of them and their intended (often specified) use is complex for humans and is very difficult for machines without a model like HQDM. This illustrates the value in being able to capture the community (instance of recognizing_language_community) that will recognise the identifier as intended.

We will start by fetching the physical_object that represents the Saturn V launch Vehicle from the Activity Model dataset. It has no data_EntityName predicate because this implementation uses the representation_by_sign HQDM model pattern. However, it does have a predicate member_of_kind that puts it in the HQDM class named "Earth_to_lunar_rocket_assembly_kind_of_functional_object".

Saturn V Launch Vehicle represented in data

The node in bold is the uuid for the physical item that we will see in the subsequent diagrams is represented by the identifier that has the pattern "SA-506". Its spatio-temporal extent is visible by it having both beginning and ending events and it having a part_of_possible_world predicate.

In order to have the pattern "SA-506" recorded we have an instance of pattern with the data_EntityName predicate set to the Literal "SA-506"

. An identifier is then created that consists_of_by_class that particular pattern. The identifier (a subtype of HQDM's Class Entity Type) is also restricted in its interpretation to a recognizing_language_community (an actual community) by the consists_of_in_members predicate.

This is illustrated in the next graph:

identifier constructed that has consists_of_by_class the pattern "SA-506"

The node in bold is the instance of pattern that is "SA-506". The instance of identifier consists_of_by_class that pattern. The other predicates are expanded upon below.

In this example the predicate represented is used to indicate what thing is represented by this identifier. Whether that is a good idea is down to the requirements around its use and subsequently is an implementation choice (see the options).

We can now develop this example by adding a representation_by_sign association between an actual sign (an instance of sign that is a member_of_ our identifier for this Saturn V Rocket Assembly), the recognizing_language_community that can recognise it for its intended purpose and the actual Saturn V Rocket Assembly itself:

representation_by_sign constructed such that a particular sign with the pattern "SA-506" is used to identify the actual Saturn V (rocket) launch vehicle

Although this example shows that the sign for the Saturn V Rocket Assembly and the rocket assembly itself share the same temporal bounds this does not need to be the case. NASA will likely have designated "SA_506" before the rocket assembly was manufactured and certainly carried on using it to represent for decades after the rocket assembly was successfully used (and destroyed in that process).

We now have the necessary data objects to generate a "full" node-edge graph of the instances of both representation_by_sign and representation_by_pattern to specifically represent the Saturn V Rocket Assembly with the specified identifier:

Full representation_by_sign and representation_by_pattern Node-Edge graph

Well done if you have noticed that the two predicates represents and represented are present in this graph. This can look like repetition (overkill). This isn't the case for our worked example but for use of this implementation pattern in a business / enterprise application it will result in some data management choices. This will likely result in only the represents relation being used where the representation_by_sign association is required and the represented relation being used where only representation_by_pattern is used. Each involves a different trade-off.

As an illustration of data object re-use the following node-edge graph illustrates the same recognizing_language_community being used in multiple representation_by_sign and representation_by_pattern contexts:

Illustration of the participation of this particular recognizing_language_community in many representation_by_sign associations and representation_by_pattern relationships

Our final Apollo example is the node-edge graph of only the identifier (subtype of representation_by_pattern) to represent the actual Saturn V rocket assembly.

Illustration of the use of a particular identifier such that it directly represented the actual Saturn V rocket assembly

This example is just an extension of the first graph above that shows "identifier constructed that has consists_of_by_class the pattern "SA-506"".

Although the use of signs &/or patterns to represent actual things is one of the more involved HQDM patterns it is in accord with how we used signs in our day-to-day lives. These patterns (and the implementation choices relating to them) provide flexibility in modelling to accommodate any (and all?) uses of signs that can crop up in a business / enterprise context.

References

HQDM book references: 13.9, 17.45

Entity Types: sign, representation_by_sign, pattern, identification, recognizing_language_community

MagmaCore (Java) reference: sign, representation_by_sign, pattern, identification, recognizing_language_community

Source code for this example is available here