Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,11 @@ This README documents the current strawman architecture. Changes must be made v
1. ARAs and KPs may both score answers (provide scores in the message); ARAs are required to score answers.
1. KPs should not call other KPs.
1. KPs that implement the Translator Reasoner API must perform the following kinds of reasoning in answering queries:
1. Making identifiers more specific, e.g. responding to a query involving an entity with information related to a subclass of that entity. In the `knowledge_graph` portion of the response, the more-specific identifier must be present and linked to the less-specific identifier. In the `results` portion of the response, the more-specific response node will be bound to the less-specific query node.
1. Making categories in a query more specific. e.g. responding to a query for a biolink:NamedThing with a particular biolink:ChemicalSubstance.
1. Making predicates more specific, e.g. responding to a query for “affects expression of” with an edge with predicate “increases expression of”. In the response, the more specific edge must occur in the knowledge_graph portion of the response, and in individual results, that more specific edge will be bound to the less specific query edge. Query Graph and Knowledge Graph edges need not match in either predicate or direction to be bound in an answer.
1. Inverting symmetric predicates, e.g. if the KP contains information that A and B are correlated, then it should respond with that information whether the query is asked in the form A-[correlated_with]->B or B-[correlated_with]->A.
1. Making identifiers more specific, e.g. responding to a query involving an entity with information related to a subclass of that entity. In practice, the more-specific ID is a node linked to the less-specific node by a subclass_of edge in the knowledge graph. In the knowledge_graph portion of the response, the more-specific identifier must be present and linked to the less-specific identifier. In the results portion of the response, the more-specific response node will be bound to the less-specific query node.
2. Making categories and qualifiers in a query more specific. e.g. responding to a query for a biolink:NamedThing with a particular biolink:ChemicalEntity.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any difference in the qualifiers mentioned in item 2 vs item 4?

3. Making predicates more specific, e.g. responding to a query for “biolink:related_to” with an edge with predicate “biolink:affects”. In the response, the more specific edge must occur in the knowledge_graph portion of the response, and in individual results, that more specific edge will be bound to the less specific query edge. Query Graph and Knowledge Graph edges need not match in either predicate or direction to be bound in an answer.
4. Making qualifiers more specific, e.g. responding to a query for "biolink:subject_aspect_qualifier":"biolink:abundance" with a more specific qualifier value, e.g. "biolink:expression".
5. Inverting symmetric predicates, e.g. if the KP contains information that A and B are correlated, then it should respond with that information whether the query is asked in the form A-[correlated_with]->B or B-[correlated_with]->A.
1. ReasonerAPI best practices:
1. When an ARA obtains multiple edges with the same subject, predicate, qualifiers, object, and original/primary source from KPs, it should represent these as a single edge in the knowledge_graph component of a ReasonerAPI message.
1. An ARA or a KP must not combine edges unless they contain the same subject, predicate, qualifiers, object, and original/primary source.
Expand Down