# kp-kul/pypnog_pprai_2026 architecture

> Architecture diagram of the GitHub repository kp-kul/pypnog_pprai_2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kp-kul/pypnog_pprai_2026
- Repository: https://github.com/kp-kul/pypnog_pprai_2026

## Overview

This repository implements a railway-transport ontology-backed Petri-net simulator. Its workflow loads the ontology and arc definitions, constructs a net and initial marking, checks and fires enabled transitions for a fixed number of steps, and emits a DOT representation and console markings. The source excerpt is partial, so the graph omits uncertain internal wiring and treats the visible simulation setup as the runtime orchestrator.

Main entry points: [`PyPNOG_PPRAI_2026.py`](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py) (Simulation script), [`Railway_Transport.owl`](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Railway_Transport.owl) (Railway ontology), [`Input_arcs_RT.csv`](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Input_arcs_RT.csv) (Input arc definitions), [`Output_arcs_RT.csv`](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Output_arcs_RT.csv) (Output arc definitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_model["Net Model"]
  node_marking["Marking structures"]
  node_place["Places"]
  node_net["MIMPNOG net"]
end

subgraph group_semantics["Execution Semantics"]
  node_runner["Simulation script"]
  node_parser["Arc formula parser"]
  node_sparql["SPARQL generator"]
  node_transition["Transitions"]
end

subgraph group_inputs["Model Inputs"]
  node_ontology["Railway ontology"]
  node_owlready["OWLready2 world"]
  node_input_arcs["Input arc definitions<br/>[Input_arcs_RT.csv]"]
  node_output_arcs["Output arc definitions<br/>[Output_arcs_RT.csv]"]
  node_pandas["Pandas CSV reader"]
end

subgraph group_results["Simulation Results"]
  node_dot["DOT network file"]
  node_console["Console markings"]
end

node_user(("User"))

node_user -->|"runs"| node_runner
node_runner -->|"loads"| node_ontology
node_runner -->|"creates world"| node_owlready
node_runner -->|"reads CSV"| node_pandas
node_pandas -->|"reads"| node_input_arcs
node_pandas -->|"reads"| node_output_arcs
node_runner -->|"constructs"| node_net
node_runner -->|"creates"| node_place
node_runner -->|"creates"| node_transition
node_runner -->|"initializes"| node_marking
node_net -->|"holds"| node_place
node_net -->|"holds"| node_transition
node_net -->|"holds"| node_marking
node_transition -->|"parses arcs"| node_parser
node_transition -->|"queries ontology"| node_sparql
node_transition -->|"checks and updates"| node_marking
node_runner -->|"checks and fires"| node_transition
node_runner -->|"writes network"| node_dot
node_runner -->|"prints markings"| node_console

click node_runner "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_parser "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_sparql "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_marking "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_place "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_transition "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_net "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py"
click node_ontology "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Railway_Transport.owl"
click node_input_arcs "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Input_arcs_RT.csv"
click node_output_arcs "https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Output_arcs_RT.csv"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_marking,node_place,node_net,node_user toneBlue
class node_runner,node_parser,node_sparql,node_transition toneAmber
class node_ontology,node_owlready,node_input_arcs,node_output_arcs,node_pandas toneMint
class node_dot,node_console toneRose
```

## Components

### Net Model

- [Marking structures](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`
- [Places](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`
- [MIMPNOG net](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`

### Execution Semantics

- [Simulation script](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`
- [Arc formula parser](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`
- [SPARQL generator](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`
- [Transitions](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/PyPNOG_PPRAI_2026.py): `PyPNOG_PPRAI_2026.py`

### Model Inputs

- [Railway ontology](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Railway_Transport.owl): `Railway_Transport.owl`
- **OWLready2 world**
- [Input arc definitions](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Input_arcs_RT.csv): `Input_arcs_RT.csv`
- [Output arc definitions](https://github.com/kp-kul/pypnog_pprai_2026/blob/main/Output_arcs_RT.csv): `Output_arcs_RT.csv`
- **Pandas CSV reader**

### Simulation Results

- **DOT network file**
- **Console markings**

### Other components

- **User**

## Connections

- User → Simulation script: runs
- Simulation script → Railway ontology: loads
- Simulation script → OWLready2 world: creates world
- Simulation script → Pandas CSV reader: reads CSV
- Pandas CSV reader → Input arc definitions: reads
- Pandas CSV reader → Output arc definitions: reads
- Simulation script → MIMPNOG net: constructs
- Simulation script → Places: creates
- Simulation script → Transitions: creates
- Simulation script → Marking structures: initializes
- MIMPNOG net → Places: holds
- MIMPNOG net → Transitions: holds
- MIMPNOG net → Marking structures: holds
- Transitions → Arc formula parser: parses arcs
- Transitions → SPARQL generator: queries ontology
- Transitions → Marking structures: checks and updates
- Simulation script → Transitions: checks and fires
- Simulation script → DOT network file: writes network
- Simulation script → Console markings: prints markings
