Repository navigation
Bidirectional OO-LD <-> OWL subset converter #109
Description
Convert between OO-LD schemas and an OWL subset.
See the migration guide for the existing OWL/SHACL crosswalk: https://oo-ld.org/1.0.0-rc.1/migration/from-owl-shacl/
Spec-side siblings: OO-LD/oold-schema#119 (guidance for generating OO-LD schemas from an existing source model, i.e. the OWL to OO-LD direction), OO-LD/oold-schema#108 (mapping-set selection, class and id aliases, x-sssom slots) and OO-LD/oold-schema#82 (RDF semantics for the keywords). Those hold the spec; this issue is the implementation.
OO-LD to OWL
-
Object schemas to
owl:Class -
Properties are first-class entities in OWL, so they carry more than a range:
rdfs:subPropertyOf,rdfs:domain,rdfs:range, and property characteristics -
Note that
x-oold-rangepoints to another schema, not to an OWL class. The two are not interchangeable and the converter has to bridge that gap explicitly -
Where the remaining property information comes from needs a decision:
- Look up the resolvable OWL property definition, i.e. dereference the property IRI and read the existing axioms
- Annotate the OO-LD schema property with additional
x-oold-*keywords, reusable by factoring properties into dedicated property schemas, e.g.Person.properties.knows.$ref: knows.schema.json - Model properties as JSON instances of a
Property.schema.json, so the instances generate the corresponding OWL-RDF, as done by the OpenSemanticWorld schema packages (seeworld.opensemantic.core)
Options 2 and 3 need further agreement, so 1 is the fallback.
OWL to OO-LD
- Class and property axioms to JSON Schema plus
@context - Full OWL 2 DL is not expressible in JSON Schema, so the supported fragment has to be declared
SSSOM output (optional)
- Optional, to carry eventual SKOS annotations on the OWL classes and properties
- Not the primary purpose of the converter
Open questions
- How much OWL detail is actually needed - just generate RDF compliant to the OWL ontology or store as much as possible of the ontological definitions in OO-LD, e.g. to feed reasoning?
- Which OWL profile to target, and whether the output is meant for reasoning or for documentation; this decides how strict the axioms must be
- Shared IRI handling with the SHACL converter (Bidirectional OO-LD <-> SHACL converter #108), both derive from the same context and should not diverge
Activity