INCATools / dosdp-tools

Utility for working with DOSDP design patterns and OWL ontologies
MIT License
23 stars 5 forks source link

MultiClause zero2many support #349

Closed hkir-dev closed 2 years ago

hkir-dev commented 2 years ago

In relation with #334, list (MultiValue) support added to multi_clause construct.

Now list_vars and data_list_vars can be used with clauses. This feature is supported in texts (def, comment, etc.), logical axioms and annotations. GCI (general class inclusion axioms) are not supported yet and not in short term plan.

Axioms supports " and ", " or " as separator and consecutively generates IntersectionOf and UnionOf constructs. When used with annotations, generates a separate axiom per list item.

Limitations (these restrictions are checked by https://github.com/INCATools/dead_simple_owl_design_patterns validator):

Example usage

list_vars:
  Expresses: "'thing'"

data_list_vars:
  Expresses_pub: "xsd:string"

logical_axioms:
   - axiom_type: subClassOf
     multi_clause:
      sep: " and "
      clauses:
        - text: "'expresses' some %s"
          vars:
            - Expresses
     annotations:
       - annotationProperty: rdfsComment
         text: "%s"
         vars:
           - Expresses_comment
       - annotationProperty: hasDbXref
         multi_clause:
           sep: " "
           clauses:
             - text: '%s'
               vars:
                 - Expresses_pub
cmungall commented 2 years ago

Would be great to see documentation on how this works with equiv axioms, and whether lists of length zero are supported. This could come as a later PR but ideally we could see it all working together

dosumis commented 2 years ago

Zero-length lists are supported in multi-clause statements (but not outside). SubClauses are dependent on a non-zero-length list in their parent clause. There is no special treatment for equivalentTo axioms. I can see that this is potentially dangerous, but in the end, this is just a dumb templating system. The same basic rules apply for multi-clause templating of any text field. I