Known issues
Known defects and limitations of the ontologies, the recommended workarounds, and the planned fixes.
CPM-O 1.0.0
Common Provenance Model Ontology (CPM-O) 1.0.0, namespace
https://www.commonprovenancemodel.org/ns/cpm#.
| ID | Summary | Affects | Status |
|---|---|---|---|
| KI-1 | Each CPM type has two IRIs: the lower-case type value and the capitalized class | CPM-O 1.0.0 | Fix planned in the next revision of the CPM specification |
| KI-2 | Identifier values must be typed xsd:anyURI | CPM-O 1.0.0 | Documented behaviour |
| KI-3 | CPM-O together with its PROV-O import is not OWL 2 DL | PROV-O (imported) | Cannot be fixed in CPM-O |
| KI-4 | Class restrictions do not validate data | CPM-O 1.0.0 | Validation planned for a future version |
KI-1: Each CPM type has two IRIs
Description.
- In PROV-N and PROV-JSON, ISO 23494-2 writes CPM types with lower-case values, e.g.
prov:type='cpm:forwardConnector'. - By OWL convention, CPM-O names its classes with a capital letter, e.g.
cpm:ForwardConnector. - To serve both, CPM-O 1.0.0 declares every lower-case type value as a class equivalent
(
owl:equivalentClass) to the capitalized class. - As a result, each concept appears twice in the documentation.
| Type value | Class |
|---|---|
backwardConnector | BackwardConnector |
forwardConnector | ForwardConnector |
specForwardConnector | ForwardConnectorSpecialized |
id | IdentifierEntity |
mainActivity | MainActivity |
currentAgent | CurrentAgent |
senderAgent | SenderAgent |
receiverAgent | ReceiverAgent |
Workaround. Always prefer the capitalized class names:
- PROV-N, PROV-JSON, PROV-XML: use the capitalized names as type values, e.g.
prov:type='cpm:ForwardConnector'. - RDF: use the capitalized classes, e.g.
cpm:ForwardConnector.
The lower-case values remain valid, because CPM-O declares them as classes equivalent to the capitalized classes.
Planned fix. The next revision of the CPM specification is to use the capitalized class names
as type values. The lower-case IRIs will then be marked owl:deprecated, not
removed, so that existing data stays valid.
KI-2: Identifier values must be typed xsd:anyURI
Description. The range of the following properties is xsd:anyURI:
cpm:referencedBundleId, cpm:referencedMetaBundleId, cpm:provenanceServiceUri,
cpm:contactIdPid, and cpm:hasId. If a value is written as an untyped string, it becomes
xsd:string in RDF. The xsd:string and xsd:anyURI value spaces are disjoint, so
the data becomes logically inconsistent with CPM-O. A qualified-name value ('ex:b0') becomes an IRI node
in RDF, which also conflicts with the declared datatype properties.
Workaround. Always write these values typed:
PROV-N: cpm:referencedBundleId="https://example.org/bundles/b0" %% xsd:anyURI
PROV-JSON: "cpm:referencedBundleId": {"$": "https://example.org/bundles/b0", "type": "xsd:anyURI"}
KI-3: CPM-O with its PROV-O import is not OWL 2 DL
Description. PROV-O (http://www.w3.org/ns/prov-o-20130430) declares
prov:specializationOf and prov:wasRevisionOf both as owl:AnnotationProperty
and as owl:ObjectProperty. OWL 2 DL does not allow a property to be both. Any ontology that imports
PROV-O unchanged, including CPM-O, therefore falls outside OWL 2 DL. CPM-O's own axioms are OWL 2 DL.
Workaround. None is needed in practice. Common reasoners, e.g. HermiT, process the ontology without problems.
Status. Cannot be fixed in CPM-O without copying and modifying PROV-O, and CPM-O deliberately imports PROV-O rather than copying it.
KI-4: Class restrictions do not validate data
Description. The owl:minCardinality restrictions document which attributes the CPM
requires. OWL, however, assumes that missing information may exist elsewhere (open-world semantics). A resource that
lacks a required attribute is therefore not reported as an error.
Workaround. Check conformance to the CPM outside the ontology, e.g. with the CPM software libraries.
Planned fix. A future version will provide validation constraints, e.g. exact cardinalities and SHACL shapes.