FRAM Ontology & JSON-LD

A formal ontological framework for the Functional Resonance Analysis Method, encoding performance variability as first-class semantic entities through OWL 2 class hierarchies and JSON-LD serialization — enabling machine reasoning, AI-powered analysis, and interoperable knowledge graph integration.

Version 1.8.1 — OOPS!-validated OWL 2 RL ontology with gUFO foundational alignment, multi-dimensional variability and WAI/WAD emergent phenotype classification (54 classes, 123 properties, 7 SHACL shapes, ~1,235 RDF triples), 8-step validation pipeline and SPARQL-based semantic equivalence checks.

By César Augusto Simões Goudouris · Programa de Pós-Graduação em Informática (PPGI), Universidade Federal do Rio de Janeiro (UFRJ) · Licensed under CC BY-SA 4.0

Theoretical Foundation

The FlowFRAM ontology provides a formal semantic representation of the Functional Resonance Analysis Method (FRAM), developed by Professor Erik Hollnagel. This ontology enables machine-readable FRAM models that can be processed by AI systems, integrated into knowledge graphs, and shared across different platforms.

By adopting JSON-LD (JavaScript Object Notation for Linked Data), we bridge the gap between human-readable FRAM models and semantic web technologies, enabling advanced reasoning and analysis capabilities.

Key Contributions

  • Formal ontological representation of the complete FRAM methodology using OWL 2 RL
  • gUFO foundational alignment with 15 rdfs:subClassOf axioms anchoring FRAM concepts in universal ontological categories
  • Variability as first-class entity with the Phenotype class hierarchy and method-agnostic quantitative metadata
  • JSON-LD encoding for semantic interoperability and RDF/SPARQL integration
  • LLM-optimized structured context for AI-powered safety analysis
  • Quantitative metadata framework for computable FRAM models
  • WAI/WAD emergent phenotype classification — analyst-defined mapping rules with quantitative discordance index Δ(WAI-WAD)

Why JSON-LD?

JSON-LD combines the simplicity of JSON with the power of Linked Data, providing a standard format that is both human-readable and machine-processable.

Linked Data Principles

URIs for unambiguous identification and linking

Developer-Friendly

Native JSON syntax familiar to developers

RDF Compatible

Direct conversion to RDF for semantic reasoning

AI-Ready

Structured context for LLM understanding

FRAM Methodology in the Ontology

The ontology captures the complete FRAM methodology, including its core principles, function aspects, variability concepts, and analysis approaches.

Six Aspects

Every FRAM function is characterized by six aspects that define its interactions:

I - Input
O - Output
P - Precondition
R - Resource
C - Control
T - Time

Variability Model

Performance variability is modeled as a first-class ontological entity with multi-dimensional characterization:

7 Dimensions:Timing, Duration, Sequence, Precision, Force, Distance, Direction
7 Phenotype subclasses:Timing, Duration, Sequence, Precision, Force, Distance and Direction (one per dimension)

Each phenotype carries a probability — enabling entropy calculation and quantitative resonance analysis.

Resonance

Functional resonance emerges from the unintended interaction of variabilities:

  • • Arises from normal performance variability
  • • Cannot be predicted from individual functions
  • • Can amplify or dampen variability
  • • Leads to both positive and negative outcomes

Foundational Ontology Alignment (gUFO)

Since v1.3.0, the FRAM Ontology is aligned with the gentle Unified Foundational Ontology (gUFO) via 15 rdfs:subClassOf axioms, anchoring domain concepts in universal ontological categories.

Alignment Table

FRAM ClassgUFO Category
Functiongufo:Event
Aspectgufo:IntrinsicMode
Couplinggufo:RelationalQuality
Variabilitygufo:Quality
PerformanceConditiongufo:Disposition
FunctionalResonancegufo:Event
Phenotypegufo:QualityValue
VariabilityDimensiongufo:Quality
FRAMModelgufo:Object
FRAMScenariogufo:Object
PhenotypeMappingRulegufo:AbstractIndividual
WAIDeclarationgufo:AbstractIndividual
EmergentPhenotypeResultgufo:Event
WAIWADComparisongufo:AbstractIndividual

Design Decision: Function as Event

Unlike Lališ et al. (2019) who proposed mapping FRAM functions as dispositions (latent capabilities), we map them as gufo:Event — activities that unfold in time.

Hollnagel (2012) defines a function as “what people — individually or collectively — have to do or what has to take place.” This describes the activity performed in situ, not a latent capacity.

The gufo:Disposition category is instead used for PerformanceCondition (CPCs) — intrinsic propensities that may or may not manifest in a particular execution.

Reference: Guizzardi, G. et al. (2022). UFO: Unified Foundational Ontology. Applied Ontology, 17(1), 167–210.

JSON-LD Structure

The FlowFRAM JSON-LD format provides a complete semantic representation of FRAM models with full methodology context.

The JSON-LD context defines the semantic vocabulary and namespace mappings for FRAM concepts. Reference the hosted context URI for a compact document, or embed the full context inline for self-contained exports.

Option 1: Hosted Context URI (recommended for external sharing)

{
  "@context": "https://flowfram.com/ontology/fram/context.jsonld",
  "@type": "FRAMModel",
  "name": "My FRAM Model",
  "hasFunction": [...]
}

Option 2: Inline context (excerpt — full context has 276 terms)

{
  "@context": {
    "@version": 1.1,
    "fram": "https://flowfram.com/ontology/fram/",
    "schema": "https://schema.org/",
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "skos": "http://www.w3.org/2004/02/skos/core#",
    
    "FRAMModel": "fram:FRAMModel",
    "Function": "fram:Function",
    "Coupling": "fram:Coupling",
    "Variability": "fram:Variability",
    "Phenotype": "fram:Phenotype",
    "Constant": "fram:Constant",
    "Variable": "fram:Variable",
    "OutputMessage": "fram:OutputMessage",
    "InterpretationProfile": "fram:InterpretationProfile",
    "FRAMScenario": "fram:FRAMScenario",
    "Passthrough": "fram:Passthrough",
    
    "hasFunction": {"@id": "fram:hasFunction", "@type": "@id"},
    "hasCoupling": {"@id": "fram:hasCoupling", "@type": "@id"},
    "hasPhenotype": {"@id": "fram:hasPhenotype", "@type": "@id"},
    "hasVariability": {"@id": "fram:hasVariability", "@type": "@id"},
    "couplingStrength": {"@id": "fram:couplingStrength", "@type": "xsd:decimal"},

    "isFunctionOf": {"@id": "fram:isFunctionOf", "@type": "@id"},
    "isCouplingOf": {"@id": "fram:isCouplingOf", "@type": "@id"}
  }
}

The full context includes all class mappings, 123 property definitions (with 14 inverse property pairs) and typed data properties (xsd:decimal, xsd:dateTime). See the full context.jsonld on GitHub.

Each FRAM function is represented with its aspects, variability characteristics, and quantitative metadata.

{
  "@id": "fram:function_heat-water",
  "@type": ["Function", "TechnologicalFunction"],
  "name": "Heat Water",
  "description": "Function to heat water to desired temperature",
  "functionType": "Technological",
  
  "aspects": {
    "input": {
      "@type": "InputAspect",
      "semanticRole": "What activates the function",
      "connections": [...]
    },
    "output": {
      "@type": "OutputAspect",
      "semanticRole": "The result of the function"
    }
  },
  
  "variability": {
    "@type": "Variability",
    "potential": "Moderate",
    "hasPhenotype": [
      {"@type": "TimingPhenotype", "value": "OnTime", "probability": 0.70},
      {"@type": "TimingPhenotype", "value": "TooLate", "probability": 0.15},
      {"@type": "TimingPhenotype", "value": "TooEarly", "probability": 0.10},
      {"@type": "TimingPhenotype", "value": "NotAtAll", "probability": 0.05}
    ]
  },
  
  "quantitativeMetadata": {
    "constants": [...],
    "variables": [...],
    "outputs": [...],
    "interpretationProfile": {
      "input": "ALL",
      "precondition": "ALL",
      "resource": "ANY"
    }
  }
}

Couplings represent the connections between functions, capturing how outputs affect downstream aspects and how variability propagates.

{
  "@id": "fram:coupling_f1-f2",
  "@type": "Coupling",
  "label": "Heated water output",
  
  "sourceFunction": "fram:function_heat-water",
  "sourceFunctionName": "Heat Water",
  "targetFunction": "fram:function_serve-tea",
  "targetFunctionName": "Serve Tea",
  
  "sourceAspect": "OutputAspect",
  "targetAspect": "InputAspect",
  
  "couplingType": "Linear",
  "couplingStrength": 1.0,

  "variabilityPropagation": {
    "propagates": true,
    "amplification": 1.0,
    "description": "Variability from Heat Water may propagate to Serve Tea"
  }
}

For computable FRAM models, the ontology supports quantitative metadata including constants, variables, and activation conditions.

{
  "quantitativeMetadata": {
    "constants": [
      {
        "@type": "Constant",
        "name": "TEMP_THRESHOLD",
        "value": 95,
        "dataType": "xsd:decimal",
        "unit": "°C",
        "semanticMeaning": "Temperature threshold"
      }
    ],
    
    "variables": [
      {
        "@type": "Variable",
        "name": "CURRENT_TEMP",
        "expression": "INITIAL_TEMP + HEATING_RATE * TIME",
        "codeType": "expression",
        "sourceType": "calculated",
        "dependencies": ["INITIAL_TEMP", "HEATING_RATE", "TIME"]
      },
      {
        "@type": "Variable",
        "name": "ITERATION",
        "expression": "flow.get('sim_iteration') || 0",
        "sourceType": "external",
        "externalKey": "sim_iteration",
        "hasFallback": true,
        "fallbackValue": "0"
      }
    ],
    
    "activationCondition": "CURRENT_TEMP >= TEMP_THRESHOLD",
    "isCustomActivation": false,
    
    "interpretationProfile": {
      "@type": "InterpretationProfile",
      "input": "ALL",
      "precondition": "ALL",
      "resource": "ANY",
      "time": "NONE",
      "control": "NONE"
    }
  }
}

Performance variability is a first-class ontological entity. Phenotypes are modeled as independent OWL classes (siblings of Variability, not subclasses), with dedicated properties enabling quantitative resonance analysis via entropy calculations and probabilistic propagation. Quantification is method-agnostic and lives in node metadata, not in the ontology TBox.

OWL 2 Class Hierarchy

owl:Thing
├── fram:FRAMModel
├── fram:Function
│   ├── fram:HumanFunction
│   ├── fram:TechnologicalFunction
│   ├── fram:OrganisationalFunction
│   ├── fram:BackgroundFunction
│   ├── fram:EntryFunction
│   ├── fram:ExitFunction
│   └── fram:ForegroundFunction
├── fram:Aspect
│   ├── fram:InputAspect
│   ├── fram:OutputAspect
│   ├── fram:PreconditionAspect
│   ├── fram:ResourceAspect
│   ├── fram:ControlAspect
│   └── fram:TimeAspect
├── fram:Coupling
├── fram:Variability
│   ├── fram:InternalVariability
│   ├── fram:ExternalVariability
│   ├── fram:UpstreamVariability
│   └── fram:DownstreamVariability
├── fram:VariabilityDimension
│   ├── fram:TimingDimension
│   ├── fram:DurationDimension
│   ├── fram:SequenceDimension
│   ├── fram:PrecisionDimension
│   ├── fram:ForceDimension
│   ├── fram:DistanceDimension
│   └── fram:DirectionDimension
├── fram:Phenotype
│   ├── fram:TimingPhenotype
│   ├── fram:DurationPhenotype
│   ├── fram:SequencePhenotype
│   ├── fram:PrecisionPhenotype
│   ├── fram:ForcePhenotype
│   ├── fram:DistancePhenotype
│   └── fram:DirectionPhenotype
├── fram:PerformanceCondition
├── fram:FunctionalResonance
├── fram:PhenotypeMappingRule
├── fram:WAIDeclaration
├── fram:EmergentPhenotypeResult
├── fram:WAIWADComparison
├── fram:Constant
├── fram:Variable
├── fram:OutputMessage
├── fram:InterpretationProfile
├── fram:FRAMScenario
├── fram:Passthrough
├── fram:ModelSummary                  ← NEW v1.8.0
├── fram:QuantitativeMetadata          ← NEW v1.8.0
├── fram:VariabilityPropagation        ← NEW v1.8.0
└── fram:FRAMPrinciple                 ← NEW v1.8.0

gUFO Alignment (rdfs:subClassOf — 15 axioms):
  fram:Function                → gufo:Event
  fram:HumanFunction           → gufo:Event
  fram:Aspect                  → gufo:IntrinsicMode
  fram:Coupling                → gufo:RelationalQuality
  fram:Variability             → gufo:Quality
  fram:VariabilityDimension    → gufo:Quality
  fram:PerformanceCondition    → gufo:Disposition
  fram:FunctionalResonance     → gufo:Event
  fram:Phenotype               → gufo:QualityValue
  fram:FRAMModel               → gufo:Object
  fram:FRAMScenario            → gufo:Object
  fram:PhenotypeMappingRule    → gufo:AbstractIndividual
  fram:WAIDeclaration          → gufo:AbstractIndividual
  fram:EmergentPhenotypeResult → gufo:Event
  fram:WAIWADComparison        → gufo:AbstractIndividual
// Enhanced Variability with Phenotypes
{
  "@type": "Variability",
  "potential": "Moderate",
  
  "hasPhenotype": [
    {
      "@type": "TimingPhenotype",
      "value": "OnTime",
      "probability": 0.70,
      "description": "Function completes within expected window"
    },
    {
      "@type": "TimingPhenotype",
      "value": "TooLate",
      "probability": 0.15,
      "description": "Delayed output — may affect downstream"
    },
    {
      "@type": "TimingPhenotype",
      "value": "TooEarly",
      "probability": 0.10,
      "description": "Premature output"
    },
    {
      "@type": "TimingPhenotype",
      "value": "NotAtAll",
      "probability": 0.05,
      "description": "No output — blocks downstream functions"
    }
  ],
  
  "hasContributingFactor": [
    {
      "@type": "PerformanceCondition",
      "name": "Available Time",
      "impact": "High",
      "description": "Tight schedules increase timing variability"
    }
  ]
}

Entropy-Based Analysis

Given phenotype probabilities pi, the Shannon entropy of a function's variability is computed as:

H(X) = −∑ pi · log2(pi)

High entropy indicates unpredictable performance (not necessarily unsafe — a Safety-II perspective). This metric enables quantitative comparison of variability across functions.

Scientific References

The FlowFRAM ontology is grounded in established scientific literature on FRAM methodology, ontology engineering, and semantic web standards.

FRAM Methodology

Hollnagel, E. (2012). FRAM: The Functional Resonance Analysis Method - Modelling Complex Socio-technical Systems. Ashgate Publishing Ltd.

Hollnagel, E. (2017). Safety-II in Practice: Developing the Resilience Potentials. Routledge.DOI: 10.4324/9781315201023

Hollnagel, E. (2014). Safety-I and Safety-II: The Past and Future of Safety Management. Ashgate Publishing Ltd.

Hollnagel, E. (1998). Cognitive Reliability and Error Analysis Method (CREAM). Elsevier Science.

Patriarca, R., Di Gravio, G., Costantino, F., Falegnami, A., & Bilotta, F. (2018). An Analytic Framework to Assess Organizational Resilience. Safety and Health at Work, 9(3), 265-276.DOI: 10.1016/j.shaw.2017.10.005

Patriarca, R., Bergström, J., Di Gravio, G., & Costantino, F. (2018). Resilience engineering: Current status of the research and future challenges. Safety Science, 102, 79-100.DOI: 10.1016/j.ssci.2017.10.005

Ontology & Semantic Web

Guizzardi, G. (2005). Ontological Foundations for Structural Conceptual Models. PhD Thesis, University of Twente (UFO - Unified Foundational Ontology).

W3C (2014). JSON-LD 1.0: A JSON-based Serialization for Linked Data. W3C Recommendation.Link

W3C (2012). OWL 2 Web Ontology Language Document Overview. W3C Recommendation.Link

W3C (2014). RDF 1.1 Concepts and Abstract Syntax. W3C Recommendation.Link

Safety & Systems Engineering

Perrow, C. (1984). Normal Accidents: Living with High-Risk Technologies. Basic Books.

Leveson, N. (2011). Engineering a Safer World: Systems Thinking Applied to Safety. MIT Press.

Rasmussen, J. (1997). Risk Management in a Dynamic Society: A Modelling Problem. Safety Science, 27(2-3), 183-213.DOI: 10.1016/S0925-7535(97)00052-0

Woods, D. D. (2015). Four concepts for resilience and the implications for the future of resilience engineering. Reliability Engineering & System Safety, 141, 5-9.DOI: 10.1016/j.ress.2015.03.018

AI & Knowledge Representation

Berners-Lee, T., Hendler, J., & Lassila, O. (2001). The Semantic Web. Scientific American, 284(5), 34-43.

Hogan, A., et al. (2021). Knowledge Graphs. ACM Computing Surveys, 54(4), 1-37.DOI: 10.1145/3447772

Pan, J. Z., et al. (2023). Large Language Models and Knowledge Graphs: Opportunities and Challenges. arXiv preprint arXiv:2308.06374.

Cite this Ontology

Academic Context and Provenance

Author
César Augusto Simões Goudouris0009-0006-2693-0267
Affiliation
Programa de Pós-Graduação em Informática (PPGI), Universidade Federal do Rio de Janeiro (UFRJ) (ROR)
Supervisors
Paulo Victor Rodrigues de Carvalho, DSc (PPGI/UFRJ)0000-0002-9276-8193
Alessandro Jatobá, DSc (CEE/Fiocruz)0000-0002-7059-6546
@software{framontology2026,
  author  = {Goudouris, César Augusto Simões},
  title   = {FRAM Ontology: An OWL 2 Vocabulary for the
             Functional Resonance Analysis Method},
  year    = {2026},
  version = {1.8.1},
  doi     = {10.5281/zenodo.18880157},
  url     = {https://github.com/cgoudouris/fram-ontology}
}

Applications & Use Cases

The FRAM ontology and JSON-LD format enable various advanced applications.

AI-Powered Analysis

LLMs can understand and analyze FRAM models using the structured semantic context, providing insights on variability, resonance, and system improvements.

Knowledge Graph Integration

FRAM models can be integrated into enterprise knowledge graphs, enabling cross-domain analysis and reasoning across organizational systems.

Interoperability

Standard JSON-LD format enables model exchange between different FRAM tools and integration with other safety analysis methodologies.

Model Repository

Semantic annotation enables searchable, queryable repositories of FRAM models that can be discovered and reused across research projects.

Automated Validation

Formal ontological constraints enable automated validation of FRAM models against methodology rules and best practices.

Multi-Level Analysis

Support for hierarchical models and cross-level analysis enables understanding of complex socio-technical systems at multiple abstraction levels.

Explore FlowFRAM

Experience the power of semantic FRAM modeling with FlowFRAM. Create models, export to JSON-LD, and leverage AI-powered analysis.

© 2026 FlowFRAM Research Project. All rights reserved.

FRAM Ontology v1.8.1 | gUFO Alignment | JSON-LD + OWL 2 RL