@base @prefix dc: @prefix hs: @prefix ozone: @prefix task: @prefix applet: @prefix slide: @prefix vc: @prefix layout: @prefix summary: @prefix data: @prefix op: @prefix modeless: @prefix create: @prefix marble: @prefix cv: @prefix metadata: @prefix help: @prefix lensui: @prefix graph: @prefix vowl: @prefix biopax: @prefix opdata: @prefix gsk: @prefix ls: @prefix : ################################################################################ # Sample data add { :testCanvas rdfs:label "Example chemistry canvas" ; rdf:type :ChemistryCanvas ; :chemicalLibrary :chemlib1 ; :chemicalLibrary :chemlib2 ; :target ; :target ; :relationship :magicallyMutatesInto ; :relationship :smellsLike ; :extraChemical :silver } add { :magicallyMutatesInto rdfs:label "Magically mutates into" ; rdf:type rdf:Property } add { :smellsLike rdfs:label "Smells like" ; rdf:type rdf:Property } add { :chemlib1 dc:title "Chemical library alpha" ; rdf:type hs:Collection ; hs:member :diphenylketone } add { :chemlib2 dc:title "Chemical library beta" ; rdf:type hs:Collection ; hs:member :gold } add { :gold rdfs:label "Gold" } add { :silver rdfs:label "Silver" } add { :diphenylketone rdfs:label "Diphenylketone" } add { :diphenylketone :smellsLike } add { :magicallyMutatesInto :gold } add { :magicallyMutatesInto :silver } add { :magicallyMutatesInto } add { hs:member :testCanvas ; hs:member :createBlankCanvas ; hs:member :sampleChemicalRelations } add { :sampleChemicalRelations rdf:type hs:Collection ; rdfs:label "Sample chemical relations" ; hs:member ls:coProducedWith ; hs:member ls:conceptFrom ; hs:member ls:derivedFrom ; hs:member ls:metabolizesTo ; hs:member ls:patentCovered ; hs:member ls:synthesizedFrom } ################################################################################ # Operations add { :topic rdf:type op:Parameter ; rdf:type daml:ObjectProperty ; dc:title "Topic" ; op:required "true" ; rdfs:range ls:TheraTopic } method :createCanvasFromTopic :topic = topic ; rdf:type op:Operation ; op:primaryParameter :topic ; dc:title "Create chemical canvas from topic" ; adenine:preload "true" = x ${ rdf:type :ChemistryCanvas ; dc:title "Chemistry canvas" } for y in (query { topic[0] ls:targetGene ?x }) add { x :target y[0] } return x method :createBlankCanvas ; rdf:type op:Operation ; dc:title "Create new chemistry canvas" ; adenine:preload "true" = x ${ rdf:type :ChemistryCanvas ; dc:title "Chemistry canvas" } return x ################################################################################ # Chemistry canvas definition add { :ChemistryCanvas rdf:type rdfs:Class ; rdfs:label "Chemistry canvas" ; hs:classView :ChemistryCanvasView } add { :relationship rdfs:label "Relationships" ; rdfs:domain :ChemistryCanvas } add { :chemicalLibrary rdfs:label "Chemical libraries" ; rdfs:domain :ChemistryCanvas } add { :extraChemical rdfs:label "Additional chemicals to show" ; rdfs:domain :ChemistryCanvas } add { :target rdfs:label "Targets" ; rdfs:domain :ChemistryCanvas } ################################################################################ # Chemistry canvas view add { :chemistryCanvasViewPart rdf:type ozone:SWTPart ; rdf:type ozone:Part ; rdf:type ozone:InteractiveViewPart ; rdf:type ozone:ViewPart ; ########################################### # Name of the view class (from above) ########################################### ozone:viewDomain :ChemistryCanvasView ; ########################################### # View name to show in the left hand side ########################################### vc:toolbarCaption "Chemistry canvas view" ; ozone:cacheStyle ozone:cacheDisabled ; hs:javaImplementation ${ rdf:type hs:JavaClass ; hs:className "edu.mit.lcs.haystack.ozone.standard.widgets.parts.TemplatePartContainerPart" } ; ozone:template ${ rdf:type graph:GraphExplorerContainerPart ; marble:graphExplorerDataSource ${ rdf:type graph:CollectionGraphExplorerSource ; marble:extraDataSource ${ rdf:type data:MergeSetSource ; ozone:dataSource ${ rdf:type data:RDFQuerySetSource ; data:existentials @( ?x ?y ) ; data:targetExistential ?x ; data:statement ${ data:subjectDataSource data:underlyingSource ; data:predicate :chemicalLibrary ; data:object ?y } ; data:statement ${ data:subject ?y ; data:predicate hs:member ; data:object ?x } } ; ozone:dataSource ${ rdf:type data:RDFQuerySetSource ; data:existentials @( ?x ?y ) ; data:targetExistential ?x ; data:statement ${ data:subjectDataSource data:underlyingSource ; data:predicate :target ; data:object ?y } ; data:statement ${ data:subject ?y ; data:predicate ls:for ; data:object ?x } } ; ozone:dataSource ${ rdf:type data:PredicateSetSource ; ozone:dataSource data:underlyingSource ; data:predicate :extraChemical } } ; marble:relationships ${ rdf:type data:PredicateSetSource ; ozone:dataSource data:underlyingSource ; data:predicate :relationship } } ; slide:child ${ rdf:type layout:Layout ; ozone:dataSource ${ rdf:type data:DAMLListSource ; data:damlList @( :topPane :bottomPane ) } ; layout:layoutConstraint ${ rdf:type layout:RowSplitterConstraint ; layout:pack "last" ; layout:constraint ${ layout:element :bottomPane ; layout:dimension "20%" } } } } } add { :topPane rdf:type marble:Diagram ; ozone:dataSource ${ rdf:type marble:ContextHostedSetSource ; data:property marble:graphExplorerDataProvider } ; marble:arcDataSource ${ rdf:type graph:GraphExplorerArcSetSource } ; layout:focus ${ rdf:type data:ContextHostedResourceSource ; data:property layout:focus } } add { :bottomPane rdf:type slide:Block ; slide:cropChildWidth "true" ; slide:child ${ rdf:type ozone:DataProviderHost ; ozone:hostedDataProvider data:underlyingSource ; ozone:propertyName lensui:underlyingSource ; slide:child ${ rdf:type layout:Layout ; ozone:dataSource ${ rdf:type data:DAMLListSource ; data:damlList @( :target :chemicalLibrary :extraChemical :relationship ) } ; layout:layoutConstraint ${ rdf:type layout:VerticalFlowConstraint ; layout:minColumnWidth "350" ; ozone:viewPartClass lensui:IndividualAspectViewPart ; layout:spansAllColumnsDataSource ${ rdf:type data:StatementExistenceSource ; data:predicate lensui:spansAllColumns ; data:object "true" } } } } }