Should "negation" be represented as part of a predicate or as a qualifier of a core triple? #826
Replies: 6 comments 6 replies
-
Arguably, if one already has "causes", adding "does not cause" is proliferation. |
Beta Was this translation helpful? Give feedback.
-
I voted for in-predicate because I anticipate a lot of querying trouble if the negation is a qualifier. If I want things that cause B and I write (?)-[causes]->(B), then unless I add a qualifier to every query from now on, I will get both the things I am looking for, as well things that are asserted to be explicitly what I am not looking for. Literally every trapi query from now on will require a predicate saying what you want, plus a qualifier saying "yes, really". |
Beta Was this translation helpful? Give feedback.
-
My experience with negation as an attribute (qualifier in this case) has been that it's very easy to forget, and sometimes code that ignores that attribute can exist for months or years producing inaccurate results. |
Beta Was this translation helpful? Give feedback.
-
In OWL2, negation on an assertion is specified at the type - e.g. object property assertion and negative object property assertion, data property assertion and negative data property assertion. i would not be in favor of creating negated properties, as we would need them for every defined property. question is whether you can simply add another type statement in biolink (along with the association type)? otherwise, you'll need a slot for it. In Hyque [1], we just had a slot that we would query for, otherwise you could generate an inconsistent OWL knowledge base (i.e. merging positive and negative statements from multiple sources may cause logical inconsistency). [1] https://jbiomedsem.biomedcentral.com/articles/10.1186/2041-1480-2-S2-S3 |
Beta Was this translation helpful? Give feedback.
-
@gglusman @sierra-moxon: If there is an edge to report that is an 'absolute' negation of an already existing predicate, is it not viable to use the broader predicate of which the actual (already existing, non-negated) predicate a child of and then express the negated precise meaning as a qualifier? This way, the 'subject predicate object' triple still gets to hold on its own; this is of course assuming that the negation semantically falls at the same hierarchical level as the non-negated predicate. |
Beta Was this translation helpful? Give feedback.
-
We discussed this during the DM call on 12-Aug and the agreement was to go with qualifier. |
Beta Was this translation helpful? Give feedback.
-
In the Translator, DataModeling call on 07/29/2021 the definitions of many terms we use in the model were discussed including association, qualifier, predicate, and provenance edge properties. See this slide deck.
In particular:
And we introduced some broad guidelines around how to decide if something should be represented as a predicate or a qualifier:
We will try and use these guidelines and definitions to restructure the qualifier hierarchy in the model and add predicates where necessary.
One of the main tenants of these guidelines is that a 'qualifier' should not change the meaning of the core triple. We currently have a qualifier in the model that violates this tenant: 'negation.' We would like feedback on whether 'negation' belongs in the predicate (ie: we'd have predicates like 'does not treat' and 'does not cause', but we would only add negation-predicates when requested -- these would not be added in bulk), or would be more useful as a qualifier in the model.
From a technical point of view, negation as a qualifier is often burdensome (every time a search, inference, display, or return is executed, the negation flag has to be set). Experience has taught us that it can be missed easily.
Please do comment on this discussion if you have use cases or opinions that could help shape this discussion. And finally, please vote on your preference. 😁
👍 for negation in the predicate (ie: a predicate would be: "does not cause").
🎉 for negation as a qualifier. (ie: a predicate would be: "cause" with the qualifier: "negation").
Beta Was this translation helpful? Give feedback.
All reactions