lego-architecture - Gene Ontology Consortium

Molecular Model (aka lego)
Editing Environment Architecture
Persona
Browser
jQuery
Authentication
go-mme.js
jsPLUMB
bbop.js
Golr
https://github.com/kltm/go-mme
autocomplete
OWL Tools
Services
Authorization
Solr
current package name
owltools.lego.MolecularModelManager
MolecularModelManager
CRUD
Model
Generator
Lego
Vis
OWL API
OWL Reasoner
API
bbop-graph
renderer
OWLAPI/
triplestore
bridge
model
punt til
MMM v2
Local FileSystem
mouseglyc.owl
Triple
Store
humanwnt.owl
persistent store is
owl files for v1 of MMM
SVN
MolecularModelManager
http://owltools.googlecode.com/svn/trunk/docs/api/owltools/gaf/lego/MolecularModelManager.html
MolecularModelManager
CRUD
Model
Generator
Lego
Vis
bbop-graph
renderer
• CRUD – create/read/update/delete : DONE
• ModelGenerator – seeding models : TESTING
REQUIRED
• Visualization
– LegoViz: Lego-Protégé graphviz
– Bbop-graph: ultimately rendered on client
– CORE VIZ. FUNCTIONALITY TO BE MOVED TO CLIENT
Create/Read/Update/Delete
OWL Tools
MolecularModelManager
CRUD
Model
Generator
Lego
Vis
bbop-graph
renderer
OWL API
OWL Reasoner
API
model
• CRUD operations delegate to OWLAPI
– Reasoner operates on each operation
• Consistency
• Filling in missing data
• Manager stores model in memory as OWLAPI facts
– Can be exported to any RDF/OWL concrete form or store
Example CRUD operation
/**
* Adds a ClassAssertion to the model, connecting an activity instance to the
class of molecule
* that enables the activity.
*
* Example: FGFR receptor activity enabledBy some UniProtKB:FGF
*
* The reasoner may detect an inconsistency under different scenarios:
* - i may be an instance of a class that is disjoint with a bfo process
* - the enabled may be an instance of a class that is disjoint with molecular
entity
*
* Under these circumstances, no error is thrown, but the response code indicates
that no operation
* was performed on the kb, and the response object indicates the operation
caused an inconsistency
*
* @param modelId
* @param i
* @param enabler
* @return response info
*/
public OWLOperationResponse addEnabledBy(String modelId,
OWLIndividual i,
OWLClassExpression enabler)
http://owltools.googlecode.com/svn/trunk/docs/api/owltools/gaf/lego/MolecularModelManager.html
Persistence
• Phase 1:
– Use OWL files in VCS
• Location:
– http://viewvc.geneontology.org/viewvc/GOSVN/trunk/experimental/lego/server/
• Phase 2:
– RDF triplestore
VCS based persistence
OWL Tools
MolecularModelManager
CRUD
Model
Generator
Lego
Vis
OWL API
OWL Reasoner
API
model
bbop-graph
renderer
Use OWLAPI
Renderer
Module to
Export to rdf/owl
Local FileSystem
persistent store is
owl files for v1 of MMM
mouseglyc.owl
humanwnt.owl
Use SVN as backing store
(same as TG)
People can use Protégé on the files
If they really want to
SVN
Triplestore (next phase)
• A dedicated backend may be more robust
– No need to partition data into files
– But: VCS should be sufficient for rollout
• Triplestore has advantages over RDBMS
– No additional modeling or complex ORM architecture
required
• Underlying model is already triples
– Part of overall GO (and EBI) software strategy
• Added bonuses
– SPARQL queries
• Status: PLANNING
MolecularModelGenerator
• Given:
MolecularModelManager
– A biological process P
– An OWL axiomatization of P
CRUD
Model
Generator
Lego
Vis
bbop-graph
renderer
• E.g. has_parts, starts_withs, …
– Can be partial but the more complete the better
– A set of annotations for a species S
• All genes involved in P and their MF annotations
• Generate
– An instance model of <P,S>
• Aka a “seed LEGO diagram”
• Documentation:
– High level: https://docs.google.com/document/d/1TV8Eb9sSvFYweVZaIfzCxF1qbnmkUaiUhTm9Bs3gRE/edit#heading=h.r7ezra5s63k
– Javadoc:
http://owltools.googlecode.com/svn/trunk/docs/api/index.html?owltools/util/MinimalModelGenerator.html
Services Layer
M3 Services
OWL Tools
MolecularModelManager
CRUD
Model
Generator
Lego
Vis
bbop-graph
renderer
OWL API
OWL Reasoner
API
•
model
Java services layer
– Current implementation is simple servlets
•
•
Same as rest of owltools – e.g. taxon server, owlsim server
STATUS: IN PROGRESS
– Refactor:
•
•
•
REST / JAX-RS
Comet/WebSockets?
STATUS: PLANNING
OWLAPI/
triplestore
bridge
Service Calls
Simple wrapper to java methods such as addEnabledBy
/mm/generate/model/:proc/:species  modelId
/mm/createActivity/  instanceId
/mm/createProcess/  instanceId
/mm/{assert,delete}/modelId/
/type/:id/:cls
/fact/:id/:prop/:filler
/location/:id/:cls[/:cls…]
/enabledBy/:id/:molCls[/:cls…]  response
/mm/graph/:modelId  bbopGraphObj
…
All calls return JSON
Note: existing calls are not
As ‘REST’y as this, but are
Being refactored
Running services
• Checkout lego dir
– http://viewvc.geneontology.org/viewvc/GOSVN/trunk/experimental/lego/server/
cd go/experimental/lego/server
./start-mm-server.sh
Connect on http://localhost:3000
JSON payload
• Payload is RDF/OWL transmitted via JSON-LD
• TODO: examples here
• See: lego-json.md in
go/experimental/lego/docs on svn
• TBD: RDF blank nodes vs OWL
SomeValuesFrom restrictions
• STATUS: IN PROGRESS
Client
Browser
jQuery
Molecular Model Environment.js
bbop
graph
vis
jsPLUMB
M3 Services
OWL Tools
• Relatively stateless and
dumb?
• All CRUD operations
immediately synced
with server
• Uses jsPlumb for
manipulation
• jQuery for tables etc
• Full capabilities TBD
• STATUS: IN PROGRESS
Client demos
• Demos:
– http://go-genkisugi.rhcloud.com/
• Source:
– https://github.com/kltm/go-mme
External Services
• Golr
– Autocomplete. STATUS: DONE
– Future: Retrieval of existing annotations
• ?TermGenie
– Use case: curator adds a new MF using TG, needs to create
an instance immediately
• For compositional terms, MME will allow any class expression, so
naming the class not strictly required
• Persona
– Authentication. STATUS: PLANNING
• Future:
– Pathway database APIs (to seed models)
Integration with AmiGO 2
• Reuse same client side framework for
displaying graphs
Integration with protein2go
• Phase 1:
– Loosely coupled
– P2go for classic GO annotation, MME for full
expressivity
• Phase 2:
– Larger CAF framework
– Investigate tighter coupling as driven by curator
requirements
• E.g. seamlessly switch between two
TODO/Open Questions
• Persist jsPlumb layout between sessions?
• REST vs COMET vs WebSockets?
• Get quick prototype out for curators vs finalize
certain aspects of architecture
Availability
• http://owltools.googlecode.com - server
– (includes other components not required for lego)
• https://github.com/kltm/go-mme - client