@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 dnd: @prefix gsk: @prefix ls: @prefix topicview: @prefix : add { biopax:pathway hs:possibleClassView cv:ListView ; hs:possibleClassView cv:ReportView ; hs:possibleClassView graph:CollectionGraphExplorerView ; cv:listDataSourceSpecification ${ rdf:type data:SortingListSource ; data:sortDataSource ${ rdf:type summary:TitleSource } ; ozone:dataSource :query } ; cv:naturalDataSourceSpecification :query ; cv:setDataSourceSpecification :query ; vowl:titleSourcePredicate biopax:NAME } add { biopax:protein hs:classView :IconSummaryView2 ; # ozone:icon ; ozone:icon ; vowl:titleSourcePredicate biopax:NAME } add { :query rdf:type data:RDFQuerySetSource ; data:existentials @( ?x ?y ) ; data:targetExistential ?x ; data:statement ${ data:subjectDataSource data:underlyingSource ; data:predicate biopax:PATHWAY-COMPONENTS ; data:object ?y } ; data:statement ${ data:subject ?y ; data:predicate biopax:PARTICIPANTS ; data:object ?x } } add { :predicateSet rdf:type graph:CollectionPredicateSet ; rdf:type graph:PredicateSet ; dc:title "BioPAX pathway arrows" ; hs:member biopax:NEXT-STEP ; hs:member :pointingTo ; hs:member ${ rdf:type data:RDFQueryAspect ; data:sourceExistential ?s ; data:targetExistential ?t ; rdfs:label "" ; data:existentials @( ?s ?t ?type ) ; data:statement ${ data:subject ?type ; data:predicate biopax:LEFT ; data:object ?s } ; data:statement ${ data:subject ?type ; data:predicate biopax:RIGHT ; data:object ?t } } } add { graph:basicPredicateSetsDataSource hs:member :predicateSet } add { :iconSummaryViewPart2 rdf:type ozone:Part ; rdf:type ozone:ViewPart ; rdf:type ozone:IconViewPart ; ozone:viewDomain :IconSummaryView2 ; ozone:template ${ rdf:type ozone:MultiplexPartContainer ; ozone:children @( :normalIcon :redIcon ) ; ozone:dataSource ${ rdf:type data:MappingSource ; data:domain @( "true" ) ; data:range @( :redIcon ) ; data:default :normalIcon ; ozone:dataSource ${ rdf:type data:LiteralPropertySource ; ozone:dataSource data:underlyingSource ; data:predicate :indicated } } } ; hs:javaImplementation ${ rdf:type hs:JavaClass ; hs:className "edu.mit.lcs.haystack.ozone.standard.widgets.parts.TemplatePartContainerPart" } } add { :normalIcon rdf:type slide:Block ; slide:borderWidth "1" ; slide:borderColor "gray" ; slide:bgcolor "white" ; slide:color "darkestGray" ; slide:margin "2" ; slide:width "140" ; slide:height "33" ; slide:valign "center" ; slide:child :iconBody } add { :redIcon rdf:type slide:Block ; slide:borderWidth "1" ; slide:borderColor "gray" ; slide:bgcolor "red" ; slide:color "darkestGray" ; slide:margin "2" ; slide:width "140" ; slide:height "33" ; slide:child :iconBody } add { :iconBody rdf:type slide:ColumnSet; slide:pack "right" ; slide:children @( ${ rdf:type slide:ColumnSet; slide:children @( ${ rdf:type slide:Block ; slide:background ; slide:width "20" ; slide:height "28" ; slide:child slide:space } ${ rdf:type slide:Block ; slide:marginX "6" ; slide:marginY "1" ; slide:valign "center" ; slide:child ${ rdf:type slide:Paragraph ; slide:fontSize "8" ; slide:children @( ${ rdf:type ozone:ViewContainer ; ozone:dataSource data:underlyingSource ; ozone:viewPartClass ozone:InlineViewPart } ) } } ) } ${ rdf:type slide:Block ; slide:width "10" ; slide:valign "top" ; slide:child :colorBarArea } ) } add { :colorBarArea rdf:type ozone:MultiplexPartContainer ; ozone:children @( slide:space :colorBarDisplay ) ; ozone:dataSource ${ rdf:type data:MappingSource ; data:domain @( "true" ) ; data:range @( :colorBarDisplay ) ; data:default slide:space ; ozone:dataSource ${ rdf:type data:LiteralPropertySource ; ozone:dataSource data:secondUnderlyingSource ; data:predicate :showSNPBars } } } add { :colorBarDisplay rdf:type layout:Layout ; ozone:dataSource ${ rdf:type data:RDFQuerySetSource ; data:existentials @( ?uniprot ?snpset ?snp ) ; data:targetExistential ?snp ; data:statement ${ data:subjectDataSource data:underlyingSource ; data:predicate ls:xref ; data:object ?uniprot } ; data:statement ${ data:subject ?snpset ; data:predicate ls:studying ; data:object ?uniprot } ; data:statement ${ data:subject ?snpset ; data:predicate ls:indivSNP ; data:object ?snp } } ; layout:layoutConstraint ${ rdf:type layout:RowStackerConstraint ; ozone:viewPartClass :ColorBarViewPart ; layout:emptyPartData :blank ; layout:morePartData :blank ; layout:sortBy ${ rdf:type data:SortingListSource ; data:sortDataSource ${ rdf:type summary:TitleSource } } } } add { :blank rdf:type slide:Block ; slide:width "0" ; slide:height "0" ; slide:child slide:space } add { :snpColorBarViewPart rdf:type ozone:Part ; rdf:type ozone:ViewPart ; rdf:type :ColorBarViewPart ; ozone:viewDomain :SNPColorBarView ; ozone:template ${ rdf:type slide:Block ; slide:borderTopWidth "2" ; slide:borderTopColor "#8800ff" ; slide:height "4" ; slide:width "10" ; ozone:tooltip "Click for SNP details" ; slide:child ${ rdf:type slide:Text ; slide:text "" ; ozone:onClick :showSNPPopup } } ; hs:javaImplementation ${ rdf:type hs:JavaClass ; hs:className "edu.mit.lcs.haystack.ozone.standard.widgets.parts.TemplatePartContainerPart" } } method :showSNPPopup = modelessChild ${ rdf:type slide:Block ; slide:alignX "left" ; slide:fontBold "false" ; slide:fontFamily "Tahoma, Arial, Times New Roman" ; slide:fontSize "8" ; slide:bgcolor "white" ; slide:color "#3B5377" ; slide:borderWidth "2" ; slide:borderColor "#8800ff" ; slide:margin "5" ; slide:width "150" ; slide:child ${ rdf:type ozone:ViewContainer ; ozone:viewPartClass :PopupViewPart ; ozone:initialResource (data:getUnderlying) } } = chooser ${ rdf:type modeless:Modeless ; modeless:child modelessChild } importjava "org.eclipse.swt.widgets" Display = point ((Display.getDefault).getCursorLocation) (__context__.getProperty modeless:modelessCreator).createModelessPart chooser point __context__ add { ls:RefSNP hs:classView :SNPColorBarView ; hs:classView :SNPPopupView } add { :snpPopupViewPart rdf:type ozone:Part ; rdf:type ozone:ViewPart ; rdf:type :PopupViewPart ; ozone:viewDomain :SNPPopupView ; ozone:template ${ rdf:type slide:Paragraph ; slide:children @( ${ rdf:type slide:Text ; slide:fontBold "true" ; slide:text "SNP details" } slide:line slide:newLine ${ rdf:type slide:Text ; slide:fontBold "true" ; ozone:dataSource ${ rdf:type data:LiteralPropertySource ; ozone:dataSource data:underlyingSource ; data:predicate ls:changedBase } } slide:space ${ rdf:type slide:Text ; slide:text "->" } slide:space ${ rdf:type slide:Text ; slide:fontBold "true" ; ozone:dataSource ${ rdf:type data:LiteralPropertySource ; ozone:dataSource data:underlyingSource ; data:predicate ls:changedBaseTo } } slide:space ${ rdf:type slide:Text ; slide:text "on chromosome" } slide:space ${ rdf:type slide:Text ; slide:fontBold "true" ; ozone:dataSource ${ rdf:type data:LiteralPropertySource ; ozone:dataSource data:underlyingSource ; data:predicate ls:location } } slide:space ${ rdf:type slide:Text ; slide:text "at" } slide:space ${ rdf:type slide:Text ; slide:fontBold "true" ; ozone:dataSource ${ rdf:type data:LiteralPropertySource ; ozone:dataSource data:underlyingSource ; data:predicate ls:locationOnChromosome } } slide:space ${ rdf:type slide:Text ; slide:text "[more]" ; ozone:onClick ozone:underlyingHyperlink } ) } ; hs:javaImplementation ${ rdf:type hs:JavaClass ; hs:className "edu.mit.lcs.haystack.ozone.standard.widgets.parts.TemplatePartContainerPart" } } ################################################################################ # Pathway explorer view add { :predicateSet rdf:type graph:CollectionPredicateSet ; rdf:type graph:PredicateSet ; dc:title "BioPAX pathway arrows" ; hs:member biopax:NEXT-STEP ; hs:member ${ rdf:type data:RDFQueryAspect ; data:sourceExistential ?s ; data:targetExistential ?t ; rdfs:label "" ; data:existentials @( ?s ?t ?type ) ; data:statement ${ data:subject ?type ; data:predicate biopax:LEFT ; data:object ?s } ; data:statement ${ data:subject ?type ; data:predicate biopax:RIGHT ; data:object ?t } } } add { hs:classView :CollectionGraphExplorerView } add { :collectionGraphExplorerViewPart rdf:type ozone:SWTPart ; rdf:type ozone:Part ; rdf:type ozone:ViewPart ; rdf:type ozone:InteractiveViewPart ; ozone:viewDomain :CollectionGraphExplorerView ; vc:toolbarCaption "Pathway view" ; ozone:template ${ rdf:type ozone:DataProviderHost ; ozone:hostedDataProvider ${ rdf:type data:ResourcePropertySource ; ozone:dataSource data:viewInstanceSource ; data:predicate :selectedPredicateSet } ; ozone:propertyName :selectedPredicateSetDataSource ; ozone:propertyName :target ; slide:child ${ rdf:type graph:GraphExplorerContainerPart ; marble:graphExplorerDataSource ${ rdf:type graph:CollectionGraphExplorerSource ; marble:extraDataSource ${ rdf:type data:MergeSetSource ; ozone:dataSource cv:setDataSource ; ozone:dataSource ${ rdf:type data:PredicateSetSource ; ozone:dataSource data:underlyingSource ; data:predicate :extra } } ; marble:relationships ${ rdf:type data:PredicateSetSource ; data:subject :predicateSet ; data:predicate hs:member } #[ ${ rdf:type data:SetProviderConstructorSource ; ozone:dataSource ${ rdf:type data:RDFQuerySetSource ; data:existentials @( ?x ?y ) ; data:extract "true" ; data:targetExistential ?x ; data:statement ${ data:subjectDataSource :selectedPredicateSetDataSource ; data:predicate rdf:type ; data:object ?y } ; data:statement ${ data:subject ?y ; data:predicate :dataSourceSpecification ; data:object ?x } } }]# } ; slide:child ${ rdf:type layout:Layout ; ozone:dataSource ${ rdf:type data:DAMLListSource ; data:damlList @( :graphExplorerGraphPane :bottomPane ) } ; layout:layoutConstraint ${ rdf:type layout:RowSplitterConstraint ; layout:pack "last" ; layout:constraint ${ layout:element :bottomPane ; layout:dimension "100" } } } } } ; hs:javaImplementation ${ rdf:type hs:JavaClass ; hs:className "edu.mit.lcs.haystack.ozone.standard.widgets.parts.TemplatePartContainerPart" } } add { :bottomPane rdf:type slide:Block ; slide:borderWidth "1" ; slide:border "1" ; slide:margin "10" ; slide:fontSize "11" ; slide:child ${ rdf:type slide:Paragraph ; slide:children @( ${ rdf:type ozone:ViewContainer ; ozone:viewPartClass ozone:InlineViewPart ; ozone:initialResource :dropTarget } slide:newLine slide:space slide:newLine ${ rdf:type slide:Text ; slide:text "Click here to find and add SNP data to the display." ; ozone:onClick :addSNP } slide:newLine slide:space slide:newLine ${ rdf:type slide:Text ; slide:text "Click here to reset the pathway display. (Afterwards, click Refresh on toolbar to complete reset.)" ; ozone:onClick :reset } ) } } method :addSNP = x (data:getUnderlying) replace x :showSNPBars ?x "true" method :reset = x (data:getUnderlying) remove x :extra ?x remove ?x :indicated "true" remove x :showSNPBars ?x add { :dropTarget dc:title "Drop targets here to merge them into the pathway display." ; rdf:type :DropTarget } add { :Dot hs:classView :DotIconView } add { :pointingTo rdfs:label "" } add { :dotIconViewPart rdf:type ozone:SWTPart ; rdf:type ozone:Part ; rdf:type ozone:IconViewPart ; rdf:type ozone:ViewPart ; ozone:viewDomain :DotIconView ; hs:javaImplementation ${ rdf:type hs:JavaClass ; hs:className "edu.mit.lcs.haystack.ozone.standard.widgets.parts.TemplatePartContainerPart" } ; ozone:template ${ rdf:type slide:Block ; slide:width "33" ; slide:bgcolor "#e0dfe3" ; slide:borderWidth "1" ; slide:borderColor "gray" ; slide:margin "1" ; slide:child ${ rdf:type ozone:ViewContainer ; ozone:dataSource ${ rdf:type data:ResourcePropertySource ; ozone:dataSource data:underlyingSource ; data:predicate :original } ; ozone:viewPartClass :DotViewPart } } } add { :dragParam rdf:type op:Parameter ; rdf:type daml:ObjectProperty ; rdf:type dnd:DragParameter ; op:required "true" ; rdfs:range ls:Target } add { :dropParam rdf:type op:Parameter ; rdf:type daml:ObjectProperty ; rdf:type dnd:DropParameter ; op:required "true" ; rdfs:range :DropTarget } method :addToDrop :dragParam = dragParam :dropParam = dropParam ; rdf:type dnd:DNDOperation ; rdf:type op:Operation = thingToAdd dragParam[0] = pathway (data:getSecondUnderlying) = results (query { thingToAdd ls:xref ?x ?y ls:xref ?x } @(?y)) for x in results if (!= thingToAdd x[0]) add { x[0] :indicated "true" ; :target thingToAdd } for y in (query { thingToAdd ls:for ?x }) = dot ${ rdf:type :Dot ; :original y[0] ; :pointingTo x[0] } add { pathway :extra dot } for z in (query { ?target ls:for y[0] ?target ls:xref ?uniprot ?other ls:xref ?uniprot } @(?other)) add { dot :pointingTo z[0] } return add { :selectedPredicateSetDataSource rdf:type data:ContextHostedResourceSource ; data:property :selectedPredicateSetDataSource } add { :extraNodesDataSource rdf:type data:PredicateSetSource ; ozone:dataSource data:viewInstanceSource ; data:predicate :extraNode } add { :graphExplorerGraphPane 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 { :basicPredicateSetsDataSource rdf:type data:PredicateSetSource ; data:subject :basicPredicateSetsDataSource ; data:predicate hs:member ; hs:member :schemaPredicateSet ; hs:member :ontologyPredicateSet }