schemas/relationship-runtime-row.schema.json
Browser-rendered handoff of repository-authored JSON. Source identity: schemas/relationship-runtime-row.schema.json. Links and original summaries are shown; external source content is not redistributed.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://chris-page-gov.github.io/okf-uk-living/schemas/relationship-runtime-row.schema.json",
"title": "A Life in the UK rich relationship runtime row",
"type": "object",
"required": [
"schema", "id", "assertion_id", "source", "target", "source_route",
"target_route", "source_iri", "target_iri", "predicate", "predicate_iri",
"kind", "label", "inverse_label", "direction", "assertion_status",
"assertion_scope", "authority", "derivation", "observed_at", "evidence",
"rights", "plane", "lifecycle", "active"
],
"properties": {
"schema": {"const": "okf-relationship-runtime-row.v1"},
"id": {"$ref": "#/$defs/iri"},
"assertion_id": {"$ref": "#/$defs/iri"},
"source": {"$ref": "#/$defs/route"},
"target": {"$ref": "#/$defs/route"},
"source_route": {"$ref": "#/$defs/route"},
"target_route": {"$ref": "#/$defs/route"},
"source_iri": {"$ref": "#/$defs/iri"},
"target_iri": {"$ref": "#/$defs/iri"},
"predicate": {"$ref": "#/$defs/iri"},
"predicate_iri": {"$ref": "#/$defs/iri"},
"kind": {"$ref": "#/$defs/nonEmpty"},
"label": {"$ref": "#/$defs/nonEmpty"},
"inverse_label": {"$ref": "#/$defs/nonEmpty"},
"direction": {"const": "source-to-target"},
"assertion_status": {
"enum": ["official", "normalized", "inferred", "model-derived"]
},
"assertion_scope": {"enum": ["real-world", "synthetic-fixture"]},
"authority": {
"type": "object",
"required": ["class", "label", "source"],
"properties": {
"class": {
"enum": ["official", "derived", "model-assisted", "synthetic", "unclassified"]
},
"label": {"$ref": "#/$defs/nonEmpty"},
"source": {"$ref": "#/$defs/httpUrl"}
},
"additionalProperties": true
},
"derivation": {"$ref": "#/$defs/iri"},
"observed_at": {"$ref": "#/$defs/nonEmpty"},
"evidence": {
"type": "array",
"minItems": 1,
"maxItems": 16,
"items": {
"type": "object",
"required": ["@id", "type", "url", "source_field", "source_value_sha256", "retrieved_at"],
"properties": {
"@id": {"$ref": "#/$defs/iri"},
"type": {"$ref": "#/$defs/nonEmpty"},
"url": {"$ref": "#/$defs/httpUrl"},
"source_field": {"$ref": "#/$defs/nonEmpty"},
"source_value_sha256": {"$ref": "#/$defs/sha256"},
"retrieved_at": {"$ref": "#/$defs/nonEmpty"}
},
"additionalProperties": true
}
},
"rights": {
"type": "object",
"required": ["source", "assertion"],
"properties": {
"source": {"$ref": "#/$defs/httpUrl"},
"assertion": {"$ref": "#/$defs/nonEmpty"}
},
"additionalProperties": true
},
"plane": {"$ref": "#/$defs/iri"},
"lifecycle": {"enum": ["active", "historical", "rejected"]},
"active": {"type": "boolean"}
},
"additionalProperties": true,
"$defs": {
"nonEmpty": {"type": "string", "minLength": 1},
"iri": {
"type": "string",
"minLength": 1,
"pattern": "^[A-Za-z][A-Za-z0-9+.-]*:[^\\s]+$"
},
"route": {"type": "string", "minLength": 1, "pattern": "^[^\\s?#]+$"},
"httpUrl": {"type": "string", "format": "uri", "pattern": "^https?://"},
"sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"}
}
}