Skip to content

Diagrams used in this documentation

  1. Spacetime diagrams (or maps)

    These diagrams display distinct chunks of spacetime that correspond to the modelling scenario and how parts of them correspond to each other. They tend to have a fixed time frame of reference but don't treat time linearly, typically using event (points in time) ordering to illustrate how the material things exist over the time period of interest(1). Rectangular regions in these diagrams correspond to both the actual material stuff being modelled and the data object that is created to represent them.

    1. While spacetime is familiar territory for physicists it is not a common notion. However, for many practical modelling situations, it is generally stuff that you can point at, kick, measure or sense. For all the worked examples here it may have been better to call them stuff-time diagrams.

      Most people find it natural to accept that the people they met at a meeting existed continuously for the duration of that meeting (and likely for a significant period prior to and after it). This is true for other things that are 'real', such as physical equipment, systems, computers, symbols/signs that we can create and interpret to help us communicate, etc.

    Spacetime Diagram Example

    Individual X and State Of X

  2. Types-Supertype Hierarchy

    The unified type system in HQDM is one of its great strengths. The supertype hierarchy up to the root type thing is shown for some of the worked examples to illustrate this lineage using mermaid.js node-edge diagrams using a Top-Down flowchart layout(1). Types shown in bold borders are used in the HQDM example on the page the diagram is shown.

    1. All the mermaid diagrams are stored in the site's \extras\example-files\ directory.
    Types-Supertype Hierarchy Example
    graph TD
      abstract_object(abstract_object)-->|supertype_of|Class(Class);
      thing(thing)-->|supertype_of|spatio_temporal_extent(spatio_temporal <br> _extent);
      class_of_state(class_of_state)-->|supertype_of|class_of_individual(class_of_individual);
      Class(Class)-->|supertype_of|class_of_spatio_temporal_extent(class_of_spatio <br> _temporal_extent);
      state(state)-->|supertype_of|individual(individual);
      spatio_temporal_extent(spatio_temporal <br> _extent)-->|supertype_of|state(state);
      class_of_individual(class_of_individual)-->|supertype_of|kind_of_individual(kind_of_individual);
      class_of_spatio_temporal_extent(class_of_spatio <br> _temporal_extent)-->|supertype_of|class_of_state(class_of_state);
      style individual stroke-width:4px;
      style state stroke-width:4px;
      style kind_of_individual stroke-width:4px;
      style class_of_state stroke-width:4px;
      thing-->|supertype_of|abstract_object;
  3. Data Object Diagrams

    To illustrate the key data objects and their relationships a Data Object Diagram is used to show each data object required to implement the documented pattern and some of the key relationships.

    Data Object Diagram Example

    Data object block diagram of association between a state of X and a state of Y

  4. Data Node-Edge Graphs

    Creating diagrams of structured data isn't easy. Node-Edge graphs are familiar in data science applications but can be difficult to inspect in detail. However, to create node-edge graphs of the example data mermaid.js is also used with a Left-Right flowchart layout(1). When the number of nodes and edges increases beyond a clean Node-Edge diagram a filtered collection of relevant nodes and edges is shown instead.

    1. All the mermaid diagrams are stored in the site's \extras\example-files\ directory.
    Data Node-Edge Diagram Example
    graph LR
      a5a6ba71-b2bb-4ed5-b079-e7cab5dac94f(("patterns <br> a5a6ba71-b2bb-4ed5 <br> -b079-e7cab5dac94f"))--->|"<b> part_of_possible_world"|bb4dcf61-3ea6-48fa-820e-4eb739ae6671(("patterns <br> bb4dcf61-3ea6-48fa <br> -820e-4eb739ae6671"));
      a5a6ba71-b2bb-4ed5-b079-e7cab5dac94f(("patterns <br> a5a6ba71-b2bb-4ed5 <br> -b079-e7cab5dac94f"))--->|"data_EntityName"|Example_individual_that_is_Lunar_Module_Eagle_LM-5["Example_individual <br> _that_is_Lunar_Module_Eagle_LM-5"];
      a5a6ba71-b2bb-4ed5-b079-e7cab5dac94f(("patterns <br> a5a6ba71-b2bb-4ed5 <br> -b079-e7cab5dac94f"))--->|"type"|functional_system(["hqdm <br> functional_system"]);
      e7b2866d-7667-4e3c-b829-1a23ae21f1c1(("patterns <br> e7b2866d-7667-4e3c <br> -b829-1a23ae21f1c1"))--->|"<b> part_of_possible_world"|bb4dcf61-3ea6-48fa-820e-4eb739ae6671(("patterns <br> bb4dcf61-3ea6-48fa <br> -820e-4eb739ae6671"));
      e7b2866d-7667-4e3c-b829-1a23ae21f1c1(("patterns <br> e7b2866d-7667-4e3c <br> -b829-1a23ae21f1c1"))--->|"<b> temporal_part_of"|a5a6ba71-b2bb-4ed5-b079-e7cab5dac94f(("patterns <br> a5a6ba71-b2bb-4ed5 <br> -b079-e7cab5dac94f"));
      e7b2866d-7667-4e3c-b829-1a23ae21f1c1(("patterns <br> e7b2866d-7667-4e3c <br> -b829-1a23ae21f1c1"))--->|"data_EntityName"|Example_state_of_Lunar_Lander_Module_Eagle_LM-5["Example_state_of <br> _Lunar_Lander_Module_Eagle_LM-5"];
      e7b2866d-7667-4e3c-b829-1a23ae21f1c1(("patterns <br> e7b2866d-7667-4e3c <br> -b829-1a23ae21f1c1"))--->|"type"|state_of_functional_system(["hqdm <br> state_of_functiona <br> l_system"]);
  5. Apollo-11 Illustrations

    The release of significant documentation by NASA has been very helpful in constructing a representative information model and worked examples. The aim of this site is to illustrate what it takes to analyse and make decisions about real-world data modelling applications. Without using representative documentation it would be too easy to slip into creating simplified worked examples that don't illustrate the necessary work to model real industrial and large organisational applications.

    Apollo-11 Illustration Example

    Where individual parts of a diagram are relevant to a modelling scenario they will be marked in red. An example schematic of the LM

    Source: Lunar Module Systems Handbook, LM-8 Vehicle, November 15 1970

  6. TURTLE Snippets

    All the example data is generated as RDF and stored in a MagmaCore database. For this website it is also exported as TUTRLE and shown in a call-out code block for each example.

    TURTLE
    Individual objects example in TURTLE
    @prefix diag:         <https://apollo-protocol.github.io/ns/2023/diagram-editor/diagram#> .
    @prefix hqdm:         <https://hqdmtop.github.io/hqdm#> .
    @prefix patterns:     <https://github.com/ClimbingAl/code-for-hqdm-patterns/patterns#> .
    @prefix patterns-rdl: <https://github.com/ClimbingAl/code-for-hqdm-patterns/patterns-rdl#> .
    
    patterns:26da1f0c-b23a-411c-a508-d2ba36cae96d
            a                            hqdm:event ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.572398939Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "t2" ;
            hqdm:member_of               patterns-rdl:ffce7cdf-8496-4842-93cb-88fa8382893c ;
            hqdm:part_of_possible_world  patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e .
    
    patterns-rdl:ffce7cdf-8496-4842-93cb-88fa8382893c
            a                            hqdm:class_of_event ;
            patterns-rdl:comment         "Class_of_event_for_Generic_pattern_examples" ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.568728410Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "ClassOfEvent_ExampleEvents" .
    
    patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e
            a                            hqdm:possible_world ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.570532375Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "Possible_World_for_generic_pattern_examples" ;
            hqdm:member_of               patterns-rdl:393a66cc-2904-4e6e-9d01-7ea1cd262c37 .
    
    patterns:9cd233dd-2831-427c-a508-80b6ddfa015a
            a                            hqdm:individual ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.572560436Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:beginning               patterns:36c50105-9456-4dd3-8663-0dfe78218963 ;
            hqdm:data_EntityName         "Example_individual_X" ;
            hqdm:ending                  patterns:dbbc329d-7bab-4d82-8400-15445cc37339 ;
            hqdm:member_of_kind          patterns-rdl:e29305e3-dcb1-45ea-a380-b0f2ba01dd67 ;
            hqdm:part_of_possible_world  patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e .
    
    patterns:dbbc329d-7bab-4d82-8400-15445cc37339
            a                            hqdm:event ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.571805251Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "t3" ;
            hqdm:member_of               patterns-rdl:ffce7cdf-8496-4842-93cb-88fa8382893c ;
            hqdm:part_of_possible_world  patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e .
    
    patterns-rdl:e29305e3-dcb1-45ea-a380-b0f2ba01dd67
            a                            hqdm:kind_of_individual ;
            patterns-rdl:comment         "Kind_of_X" ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.568224020Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "KindOfIndividual_X" .
    
    patterns:36c50105-9456-4dd3-8663-0dfe78218963
            a                            hqdm:event ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.571155063Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "t0" ;
            hqdm:member_of               patterns-rdl:ffce7cdf-8496-4842-93cb-88fa8382893c ;
            hqdm:part_of_possible_world  patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e .
    
    patterns:351605b3-3f26-417e-a5a3-14767270d692
            a                            hqdm:event ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.572265642Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "t1" ;
            hqdm:member_of               patterns-rdl:ffce7cdf-8496-4842-93cb-88fa8382893c ;
            hqdm:part_of_possible_world  patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e .
    
    patterns-rdl:393a66cc-2904-4e6e-9d01-7ea1cd262c37
            a                            hqdm:class_of_possible_world ;
            patterns-rdl:comment         "Class_of_possible_world_for_generic_pattern_examples" ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.569759490Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "ClassOfPossibleWorld__GenericPatternExamples" .
    
    patterns-rdl:4ff87a8e-5670-4a18-8cf1-514489c3861a
            a                            hqdm:class_of_state ;
            patterns-rdl:comment         "Class_of_state_of_X" ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.568575913Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:data_EntityName         "ClassOfState_X" .
    
    patterns:ae788dab-f71a-4177-87a1-3dd0ef42d38c
            a                            hqdm:state ;
            patterns-rdl:record_created  "2024-01-20T19:00:11.572683234Z" ;
            patterns-rdl:record_creator  "HqdmPatternProject_User1" ;
            hqdm:beginning               patterns:351605b3-3f26-417e-a5a3-14767270d692 ;
            hqdm:data_EntityName         "Example_state_of_X" ;
            hqdm:ending                  patterns:26da1f0c-b23a-411c-a508-d2ba36cae96d ;
            hqdm:member_of               patterns-rdl:4ff87a8e-5670-4a18-8cf1-514489c3861a ;
            hqdm:part_of_possible_world  patterns:aa4f2ebf-e408-4702-be85-bc7dc44fb60e ;
            hqdm:temporal_part_of        patterns:9cd233dd-2831-427c-a508-80b6ddfa015a .