Data Model¶
The CPRMV API produces and consumes data conforming to the CPRMV OWL vocabulary (rdf/cprmv.ttl) validated by the SHACL shapes in rdf/cprmv.shacl.ttl.
Namespace¶
Prefix: cprmv:
Core classes¶
cprmv:RuleSet¶
A set of rules that is the output of a public service. Subclass of eli:LegalResource and cv:Output.
| Property | Type | Cardinality | Notes |
|---|---|---|---|
cprmv:id |
literal | 1..1 | Unique identifier |
cprmv:validFrom |
xsd:date |
1..1 | |
cprmv:validUntil |
xsd:date |
0..1 | |
cprmv:publishedOn |
xsd:date |
0..1 | |
cprmv:isOutputOf |
cpsv:PublicService |
1..1 | Links to the service that produced this rule set |
cprmv:hasMethod |
cprmv:RuleMethod |
1..* | |
cprmv:hasPart |
RDF list of cprmv:Rule/cprmv:RuleSet |
1..1 | |
cprmv:isBasedOn |
cprmv:RuleSet or cprmv:Rule |
0..* | |
cprmv:comment |
xsd:string |
0..1 |
cprmv:Analysis¶
Subclass of cprmv:RuleSet. A rule set produced by following an analysis method (e.g. Wetsanalyse/JAS).
cprmv:DecisionModel¶
Subclass of cprmv:RuleSet. A rule set produced by following a formalisation method (e.g. DMN 1.3).
| Property | Type | Cardinality |
|---|---|---|
cprmv:hasAnalysis |
cprmv:Analysis |
0..* |
cprmv:Rule¶
An individual rule within a rule set.
| Property | Type | Cardinality | Notes |
|---|---|---|---|
cprmv:id |
literal (lang-tagged) | 1..1 | Used for path navigation |
cprmv:definition |
literal | 0..1 | Natural language definition |
cprmv:postDefinition |
literal | 0..1 | |
cprmv:sourceQuote |
xsd:string |
0..1 | |
cprmv:comment |
xsd:string |
0..1 | |
cprmv:isBasedOn |
cprmv:Rule |
0..* | |
cprmv:hasPart |
RDF list | 0..1 | Sub-rules |
cprmv:Parameter¶
Subclass of cprmv:Rule. A rule that represents a parameter value (e.g. income limit, threshold percentage).
RuleMethod hierarchy¶
| Class | Description |
|---|---|
cprmv:RuleMethod |
Base class |
cprmv:AnalysisMethod |
Methods for analysing legislation (e.g. Wetsanalyse) |
cprmv:FormalisationMethod |
Methods for formalising rules (e.g. DMN 1.3) |
cprmv:CodificationMethod |
Methods for codifying rules |
cprmv:ExecutionMethod |
Methods for executing rules |
cprmv:ExplanationMethod |
Methods for explaining rules |
cprmv:TestMethod |
Methods for testing rules |
cprmv:PublicationMethod |
Methods tied to a publication repository |
cprmv:ReferenceMethod |
Methods for referencing rules externally |
RDF list structure for hasPart¶
cprmv:hasPart uses standard RDF lists (rdf:first / rdf:rest / rdf:nil). The Python traversal in get_rule and get_first_rule_by_Id_path_split_from_rule_as_root walks these lists explicitly. Each list item is a blank node [ a cprmv:Rule; cprmv:id "..."; ... ].
Methods namespace¶
Prefix: cprmv-serve:
Key serve-API properties on method nodes:
| Property | Purpose |
|---|---|
cprmv-serve:publication-id-format |
Format template for the publication identifier |
cprmv-serve:normalized-id-format |
Normalised format used for parsing incoming IDs |
cprmv-serve:repository-publication-location-format |
URL template for downloading the publication XML |
cprmv-serve:frbr-repository-sru-url |
SRU URL for resolving latest versions |
cprmv-serve:xslt |
Relative path to the XSLT file |
SHACL shapes¶
rdf/cprmv.shacl.ttl defines shapes for cprmv:RuleSet, cprmv:DecisionModel, cprmv:Rule, and cprmv:RuleMethod. The shapes enforce mandatory properties and cardinality constraints as listed in the tables above. They can be used to validate TTL files produced by the CLI tool (tools/bwb2cprmv/) or the API's own output before ingestion into TriplyDB.