-
Notifications
You must be signed in to change notification settings - Fork 2
ARAGORN
A Translator ARA to query Knowledge Providers (KPs) and synthesize highly ranked answers relevant to user-specified questions.
- Operates in a federated knowledge environment.
- Bridges the precision mismatch between data specificity in KPs and more abstract levels of user queries.
- Generalizes answer ranking.
- Normalizes data to use preferred and equivalent identifiers.
Patrick Wang ( patrick@covar.com )
TODO: Disclose more team members?
ARAGORN provides unified access to multiple operations(see glossary and the Operations repo) including fill/bind/complete (Strider), Merge Answers (Answer Coalescence), Edge Weighting, and Result Scoring (Aragorn Ranker). Currently, ARAGORN composes these operations into a fixed workflow, but the individual components are available as their own TRAPI endpoints.
The current ARAGORN workflow consists of:
- Strider takes a TRAPI query graph, and calls distributed KPs to construct a TRAPI KG and results.
- AnswerCoalescence finds and adds to the TRAPI message new answers by combining similar or related answers from Strider.
- AragornRanker adds literature co-occurrence edges to the graph, adds a weight to each edge binding, and scores each result based on these weights.
The ARAGORN service requires that you submit your query in a TRAPI formatted query graph (JSON) request.
TODO: More details on what each component does is most likely needed here.
The creation of a ARAGORN starts with conceptually defining two entities or concepts that may share an interesting relationship.
The process is as follows:
- Specify a CURIE(s) (a Compact URI such as MONDO:0004979 or MONDO:0004980) that has a category (e.g. biolink:Disease).
- Specify a Concept(s) (a biolink entity such as biolink:ChemicalSubstance or biolink:AnatomicalEntity) that will be associated to the CURIE(s).
- Specify a biolink predicate to discover links between the CURIE(s) and Concept(s) (e.g. biolink:correlated_with, etc).
- Create a TRAPI compliant query graph in JSON format that declares the parameters noted above.
This query can be plainly stated as: "What chemical substances or anatomical entities are correlated with asthma (disease code MONDO:0004949) or atopic eczema (MONDO:0004980)"
This example shows the resultant a TRAPI query message JSON that uses the example parameters shown above.
{
"message": {
"query_graph": {
"nodes": {
"n0": {
"ids": ["MONDO:0004979", "MONDO:0004980"],
"category": "biolink:Disease"
},
"n1": {
"categories": ["biolink:ChemicalSubstance", "biolink:AnatomicalEntity"]
}
},
"edges": {
"e01": {
"subject": "n0",
"object": "n1",
"predicate": "biolink:correlated_with"
}
}
}
}
}
The ARAGORN user interface accepts a TRAPI compliant message query. For more information on the TRAPI standard please refer to https://github.com/NCATSTranslator/ReasonerAPI.git.
The goal is to submit a properly formatted TRAPI question graph to ARAGORN. There are two ways to do this:
- Use the ARAGORN website, a SmartAPI web based tool to submit your TRAPI query, or
- Use curl, a command line tool to post messages to a URL.
To start, please direct your browser to the ARAGORN website located at: https://aragorn.renci.org/docs
Then:
- Select the ARAGORN "Post" (/query) button on the page.
- Select the "try it out" button.
- Select an "Answer coalesce type" from the drop down.
- Type (or cut/paste) your TRAPI question graph JSON into the request text area.
- Finally, select the "Execute" button.
In the sections below the submission area on the web page you will see an area for a "Successful response" or "Validation error" messages.
The curl command is supported by both linux and Windows operating systems and can be used to POST a message directly to a ARAGORN web service.
In this example, the TRAPI JSON is located in a file (query.json) which is POSTed to the ARAGORN web service /query endpoint.
curl -X POST https://aragorn.renci.org/query -d @query.json
Receiving a message of "Not a valid Translator query" from ARAGORN indicates a problem with the query graph JSON failing validation. This is commonly due to the query_graph not being wrapped in a "message" element.
Receiving a 500 server can also indicate invalid JSON sent to web service. JSON can be validated easily here:
To declare an issue with this software:
- Please browse to: https://github.com/ranking-agent/aragorn/issues.
- Create a new issue by selecting the "New issue" button.
- Populate the form displayed. Please enter a concise description of the issue. Include test data if available.
TODO: Include preface here.
- TODO: What exactly is expected here?
The Smart-API open API specification and registration can be found here
TODO: Include preface here.
TODO: How is it installed? Provide a link to the ARAGORN code readme? if so, it needs updating to include the actual installation procedures.
TODO: Include preface here.
- TODO: How is this different from the "Steps to create your own query" above? Is it just more examples of interesting things?
- TODO: Is this to showcase different approaches for discovering interesting things?
- TODO: Is this to showcase a jupiter notebook or two?
Below you will find the external web services that are used within the ARAGORN tool.
Below is a list of knowledge providers accessed by ARAGORN and supporting web services.
TODO: Is this is a comprehensive list? is more needed?
- Genetic Knowledge Provider
- Molecular Data Provider
- Service Provider
- Exposure Provider
- Automat
- Data normalization services
Below you will find references that detail the standards, web services and supporting tools that are part of ARAGORN.
- Answer Coalescence
- ARAGORN
- KP Registry
- Node normalization
- ARAGORN ranker
- [Reasoner](TRAPI->cypher transpiler)](https://github.com/ranking-agent/reasoner)
- ReasonerAPI
- ReasonerStdAPI Message Jupyter Notebook visualizer
- Strider
TODO: Need more links here? Should the other wiki pages be referenced here?