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