# OWL ontology, rendered from the LinkML model.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .

<https://bbsk.sk/models/kpi/key-performance-indicator/views/qfhhh5no5wz4lk3rfjisdtx3chiyfig3> a owl:Ontology ;
  rdfs:label "key-performance-indicator" .

<https://joinedcontext.com/models/KeyPerformanceIndicator> a owl:Class ;
  rdfs:label "KeyPerformanceIndicator" ;
  rdfs:comment "One number for one window, with the provenance that makes it auditable." .

<https://joinedcontext.com/models/calculationFormula> a owl:DatatypeProperty ;
  rdfs:label "calculationFormula" ;
  rdfs:range xsd:string ;
  rdfs:comment "How the value was computed, in words a reader can check the number against: the measure, the aggregation, the window and any divisor, such as `per km² of the district's own area`." .

<https://joinedcontext.com/models/calculationPeriod> a owl:DatatypeProperty ;
  rdfs:label "calculationPeriod" ;
  rdfs:range xsd:anyURI ;
  rdfs:comment "The window the value actually covers, as `{ start, end }` RFC 3339 instants. It is the window the pipeline used and not the one it was asked for, so the distance between `calculationPeriod.end` and `updatedAt` is how stale the source is." .

<https://joinedcontext.com/models/computedBy> a owl:DatatypeProperty ;
  rdfs:label "computedBy" ;
  rdfs:range xsd:string ;
  rdfs:comment "The Pipeline that computed it, as its URN." .

<https://joinedcontext.com/models/currentValue> a owl:DatatypeProperty ;
  rdfs:label "currentValue" ;
  rdfs:range xsd:anyURI ;
  rdfs:comment "The number, with its unit on the Property as `unitCode`, a UN/CEFACT common code, and the instant it describes as `observedAt`. A window with no reading in it carries the string `not measured` instead of a number, and never a zero: a zero reads as a measurement (Development/10 §5)." .

<https://joinedcontext.com/models/derivedFrom> a owl:DatatypeProperty ;
  rdfs:label "derivedFrom" ;
  rdfs:range xsd:string ;
  rdfs:comment "The Endpoint the sources were read through, as its URN. The endpoint and not the space: what an indicator could see is what that endpoint's policy let it see." .

<https://purl.org/geojson/vocab#geometry> a owl:DatatypeProperty ;
  rdfs:label "location" ;
  rdfs:range xsd:string ;
  rdfs:comment "Where the entity is, as GeoJSON geometry." .

<https://joinedcontext.com/models/name> a owl:DatatypeProperty ;
  rdfs:label "name" ;
  rdfs:range xsd:string ;
  rdfs:comment "The indicator's own name, equal to the `{localId}` of its id, so the territory is legible without parsing the URN." .

<https://joinedcontext.com/models/updatedAt> a owl:DatatypeProperty ;
  rdfs:label "updatedAt" ;
  rdfs:range xsd:dateTime ;
  rdfs:comment "When the pipeline last ran, as an NGSI-LD DateTime. It is the run and not the window: an indicator whose source stopped moving keeps its window and gains a newer `updatedAt`, which is the visible fact that the source is static." .
