diff --git a/src/schema/ontology_model.yaml b/src/schema/ontology_model.yaml index 07dcb532..c4b5cc35 100644 --- a/src/schema/ontology_model.yaml +++ b/src/schema/ontology_model.yaml @@ -86,7 +86,29 @@ classes: - relationship is_a: ontology element description: >- - A relationship between two nodes. We assume owlstar or similar for existential restrictions + A relationship between two nodes. + + Currently the only kinds of edges supported in KGCL: + + * A subClassOf B <==> Edge(subject=A, predicate=owl:subClassOf, object=B) + * A subClassOf P some B <==> Edge(subject=A, predicate=P, object=B) + * P subPropertyOf Q <==> Edge(subject=P, predicate=owl:subPropertyOf, object=Q) + + These represent the most common kind of pairwise relationship between classes, + and classes are the dominant node type in ontologies. + + In future a wider variety of OWL axiom types will be supportedn through the use + of an additional edge property/slot to indicate the interpretation of the axiom, + following owlstar (https://github.com/cmungall/owlstar). + + For example: + * `A subClassOf R only B <==> Edge(subject=A, predicate=P, object=B, interpretation=AllOnly)` + * `A Annotation(P,B) <==> Edge(subject=A, predicate=P, object=B, interpretation=annotationAssertion)` + + Note that not all axioms are intended to map to edges. Axioms/triples where the object is a literal + would be represented as node properties. Complex OWL axioms involving nesting would have their own + dedicated construct, or may be represented generically. These are out of scope for the current + version of KGCL mappings: - owl:Axiom - rdf:Statement