owlcollab / oboformat

Automatically exported from code.google.com/p/oboformat
5 stars 2 forks source link

1.6: Allow domain, range, is-a for annotation properties (alternative to #135) #136

Open cmungall opened 1 year ago

cmungall commented 1 year ago

Alternative to:

Currently http://owlcollab.github.io/oboformat/doc/obo-syntax.html#5.4 states

Typedef frame with id:Rel-ID Translation - TP(S)
is_a(SubRel-ID Qualifiers)) SubObjectPropertyOf(T(Qualifiers) T(Rel-ID) T(SubRel-ID))
domain(TargetClass-ID Qualifiers)) ObjectPropertyDomain(T(Qualifiers) T(Rel-ID) T(TargetClass-ID))
range(TargetClass-ID Qualifiers)) ObjectPropertyRange(T(Qualifiers) T(Rel-ID) T(TargetClass-ID))

This assumes the Typedef is an OP. A Typedef can be mapped to an AP via the rules in 5.1:

OBO Conditions Translation - TF(S)
Term(Class-id Clause-1..Clause-n)   Class(T(Class-id)) TC(Clause-1)..TC(Clause-n)
Typedef(Rel-ID) is_metadata_tag(true) ∈ TypedefFrames[Rel-ID] AnnotationProperty(T(Rel-ID)) TP(Clause-1)..PC(Clause-n)
Typedef(Rel-ID) is_metadata_tag(true) ∉ TypedefFrames[Rel-ID] ObjectProperty(T(Rel-ID)) TP(Clause-1)..PC(Clause-n)
Instance(Instance-id)   NamedIndividual(T(Instance-id)) TI(Clause-1)..IC(Clause-n)

under 1.4 spec, if we have:

[Typedef]
id: r
is_metadata_tag: true
range: xsd:string

this will result in illegal punning.

proposal