Modeling a Graphical Expression of Materials Data (GEMD)

model-memo

The things of concern1 are materials, processes, measurements, and ingredients. Materials are output by processes and are subject to measurements. A process may take materials as ingredients.

Things are recorded in three ways: as templates, as specs, and as runs. You can record a template for a thing – what might be the case. You can also record a spec for a thing – what is intended. Finally, you can record a run for a thing – what is, or was.

Each thing can have attributes from three categories: properties, parameters, and conditions. A property is something measured or calculated. A parameter is something set. A condition describes an aspect of the thing’s environment.

model-diagram

erDiagram Process ||--|| Material : outputs Material ||--o{ Measurement : subjectTo Ingredient }o--|| Material : from Ingredient }o--|| Process : inputTo Record }o--|| RecordType : has RecordType }o--o| Template : mayBe RecordType }o--o| Spec : mayBe RecordType }o--o| Run : mayBe Record }o--|| Thing : about Thing }o--o| Process : mayBe Thing }o--o| Material : mayBe Thing }o--o| Measurement : mayBe Thing }o--o| Ingredient : mayBe Thing }o--o{ Attribute : has Attribute }o--o| Property : mayBe Attribute }o--o| Parameter : mayBe Attribute }o--o| Condition : mayBe

model-formalism

[
  {
    "@base": "terminusdb:///data/",
    "@schema": "terminusdb:///schema#",
    "@type": "@context"
  },
  {
    "@id": "Thing",
    "@type": "Class",  
    "@abstract": [],
    "has": {
      "@type": "Set",
      "@class": "Attribute"
    }
  },
  {
    "@id": "Process",
    "@type": "Class",  
    "@inherits": ["Thing"],
    "outputs": "Material",
    "hasInput": {
        "@type": "Set",
        "@class": "Ingredient"
    }  
  },
  {
    "@id": "Material",
    "@type": "Class",  
    "@inherits": ["Thing"],
    "subjectTo": {
        "@type": "Set",
        "@class":  "Measurement"
    }
  },
  {
    "@id": "Measurement",
    "@type": "Class",  
    "@inherits": ["Thing"]
  },    
  {
    "@id": "Ingredient",
    "@type": "Class",  
    "@inherits": ["Thing"],
    "from": "Material"  
  },
  {
    "@id": "Attribute",
    "@type": "Class",  
    "@abstract": []
  },
  {
    "@id": "Property",
    "@type": "Class",  
    "@inherits": ["Attribute"]
  }, 
  {
    "@id": "Parameter",
    "@type": "Class",  
    "@inherits": ["Attribute"]
  }, 
  {
    "@id": "Condition",
    "@type": "Class",  
    "@inherits": ["Attribute"]
  },     
  {
    "@id": "Record",
    "@type": "Class",
    "@abstract": [],
    "about": "Thing"  
  },
  {
    "@id": "Template",
    "@type": "Class",
    "@inherits": ["Record"] 
  },
  {
    "@id": "Spec",
    "@type": "Class",
    "@inherits": ["Record"]
  },
  {
    "@id": "Run",
    "@type": "Class",
    "@inherits": ["Record"]
  }        
]