-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document OWL sublanguage supported by the sbol_factory #5
Comments
There is a very limited subset of OWL that is currently supported. Most of the supported patterns are in the following example:
|
@bbartley Thanks! That is really helpful. Some follow-up questions:
|
Actually, on reflection, my guess about question number one does not make sense, since there can be multiple disjoint sub-properties of a single OWL property. So I am afraid I don't understand how |
|
Note that |
With regards to @rpgoldman 's point 3:
Here, I would say that since C.P has list type, so must C1.P, since otherwise it would conflict with the definition in its superclass. The principle for reasoning: restrictions can be tightened, but not relaxed. Thus, the list/singleton distinction always gets set by the parent class. |
Oh, I see. So a
Is that what you wanted? Just from reading the name 'compositionalProperty
An
Well, I have been involved in two programs (the BBN-led Integrated Learning and the SIFT-led Oh By The Way), and in both of them it was a real problem to narrow properties down to singletons. Because of the fact that a class could have any number of values for property P, and a subclass could have exactly one, you can end up with a translator that gives you a method Having lists all the time can be cumbersome, but the alternative gives you creeping type uncertainty. |
I think that's the correct reasoning, but I'm not sure that it's worth the additional complication in writing the translator, and maintaining code if you change your mind about cardinalities, versus just always having lists. But it's your call which is easier in the long run. |
@rpgoldman On the matter of lists vs. singletons: based on past experience, many of our users would find it hateful to use lists to interact with singleton items. The "if you happen to call p on subclass you get a single data structure instead" failure mode shouldn't be able happen with the semantics proposed here. I think the point about |
The semantics you propose work, I think, as long as you are willing to implement them in the compiler. |
Suggested alternate solution from @bbartley that we're aiming for: change from using Then we don't need to say anything about either subPropertyOf or an annotation. |
That sounds right to me, but it’s above my pay grade where OWL is concerned. Off-hand I’m surprised that this is allowed, since doesn’t subclassing property allow you second order expressive power (because you can quantify over the instances of |
Looks like subclassing ObjectProperty is both allowed and not allowed: https://stackoverflow.com/questions/62679433/defining-a-subclass-of-owlobjectproperty-with-domains-range-constraint |
I’m sorry, but I think this is a pretty strong argument for using an annotation instead. Annotations were made specifically for dealing with things ordinary OWL (which is really OWL DL) can’t. Breaking this sort of rule is likely to break standard OWL tools, so let’s not do that |
Recommendation for resolving both this and SynBioDex/sbol-owl3#1 from meeting of @bbartley , @jakebeal and @goksel : Using a subproperty relationship for parent/child relationships. This, given e.g., The name to be used for the property is still not determined. Possibilities include:
|
Discussing experiences with other users, it seems that one needs to know what OWL constructs are and are not supported in order to effectively use the sbol_factory.
As I am working on the Containers ontology for PAML, I feel vulnerable to wasting time by encoding constraints that will either be ignored by the sbol_factory or that might cause it to malfunction.
Please expand the docs to explain what patterns to avoid, etc.
The text was updated successfully, but these errors were encountered: