kapernikov.com
Complex signal gantry
What is RINF? / Chapter 4

Technical Framework

RINF 3.1 is powered by the Semantic Web. It moves away from siloed documents to clear, machine-readable definitions.

A Word on Linked Data

The massive shift in RINF 3.1 is the adoption of Linked Data principles. Instead of just sending files, we are building a Knowledge Graph.

ERA Ontology

The data model is based on the ERA Ontology. This is the dictionary of the railway. It provides machine-readable definitions for every object (Track, Signal, Platform) and property.

Instead of guessing what "TrackType=1" means, the Ontology defines it explicitly.

Open for Contribution

The ERA Ontology is managed openly. It is not a closed standard; contributions and comments are welcome from the community.

View on GitLab

RDF Format

Data is structured using RDF (Resource Description Framework). This is a graph format where everything is a "triple" (Subject -> Predicate -> Object).

External Ontologies

RINF doesn't reinvent the wheel. It reuses standard global ontologies:

  • GeoSPARQL for geography (coordinates, geometries).
  • Time Ontology for validity dates and intervals.
  • SKOS for code lists and definitions.

Validation with SHACL

How do we ensure the data is correct? RINF uses SHACL (Shapes Constraint Language) rules.

Think of SHACL as a "spellchecker" for the graph. Just as XML has XSD to define valid structure, RDF uses SHACL. It defines "shapes" that data must fit into. If a node doesn't fit its shape (e.g., missing a required property or having the wrong data type), it's rejected.

SHACL rules act like automated tests for the data. They check:

  • Cardinality: Does this track have exactly one length?
  • Data Types: Is the speed limit a number?
  • Dependencies: If a platform exists, does it have a reference to a parent station?
Example: Checking Track Length SHACL
era-sh:TrackShape
    a sh:NodeShape ;
    sh:targetClass era:Track ;
    sh:property [
        sh:path era:length ;
        sh:minCount 1 ;
        sh:datatype xsd:double ;
        sh:message "A track must have a length (number)." ;
    ] .

Learn More

For a deep dive into how these rules work in practice, read SHACL for the Practitioner.

URIs: The Identity of Objects

In Linked Data, every object needs a unique name, or URI (Uniform Resource Identifier). RINF uses a specific strategy:

Hash URIs (Versioned)

Generated based on the object's natural keys *and* its validity dates (as defined by the Time Ontology).
Examples: .../Track/123_2024-01-01_2025-01-01
This uniquely identifies a specific *version* of an element in time.


Canonical URIs (Identity)

Represents the element conceptually, without considering validity dates.
Example: .../Track/123
This allows us to query "Track 123" regardless of when it was active.