https://docs.google.com/document/d/136NBEwqi0Jwon4h23m0BfDMMIn_TBx06o1pPXNz8HXk/edit
This API wraps a number of different more modular APIs and database engines or analysis services. The idea is that the API implementation will do the right thing - for example, using Solr for searches but injecting results with fast in-memory traversal of ontology graphs.
When starting up, configure with:
- PURL of tbox
- BOLT connector metadata for neo4j
- SPARQL endpoints
Can we just compose owlery here?
- Wraps: OWLAPI/scowl/owlery
e.g.
This provides access over the full contents of all knowledge bases, with a graph level of abstraction
- Wraps: neo4j OR sparql OR in-memory
lots of common fields
Autocomplete [/search/autocomplete{?searchTerms,?negatedSearchTerms,selectFields,facetFields,categories}]
- Wraps: Solr
Lexical Search [/search/lexical{?searchTerms,?negatedSearchTerms,selectFields,facetFields,categories}]
- Wraps: Solr
Ontology Entity Search [/search/ont{?searchTerms,?negatedSearchTerms,selectFields,facetFields,categories,includeEntailed,isFuzzy}]
- Wraps: Solr (bool)
- Wraps: owlsim3 (fuzzy) - or compositio of solr->sim
Link Search [/search/link{?searchTerms,?negatedSearchTerms,selectFields,facetFields,subjCategories,objCategories,includeEntailed,isFuzzy}]
Operations involving recognizing and interpreting entities in text
Operations on groups of entities
Given a list of entity designators (e.g. gene symbols) resolve these to indentifiers
Find enriched ontology classes or entity sets based on an input entity set
- Wraps: owlsim3
- Wraps: owlsim3 OR neo4j
How are the entities connected? Typically called with 2 entities.
Different implementations may do different kinds of things. E.g. path in sequence space, ontology space, graph path, ..
Simple sparql wrapper - required?
- Wraps: SPARQL
Who has queried for what?
Convenience methods
Map an ID
Map an ID
The implementation will use a variety of different engines depending on the task at hand (e.g. solr for faceted or textual search, or for retrieval of associations; owlsim for noisy search; OWLAPI or triplestore or neo4j for ontology operations). This will be transparent to the user.
The implementation will be in Scala. This will allow direct JVM access where required, obviating the need for complex and inefficient chaining of web apis. The initial implementation may be a port of scigraph-services to scala, and can be extended.