SlideShare a Scribd company logo
SHARE & the Semantic
        Web
    This Time it’s Personal!




                                     http://
                               sadiframework.org
SADI
Semantic Automated Discovery & Integration




            (Semantic Web Services)
A SADI service…

 … is identified by a URI
     also an HTTP URL




  http://sadiframework.org/examples/hello
A SADI service…

 … responds to GET with service description
         RDF document describing the service URI
         conforms to Feta (BioMoby, myGrid)

 <rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:mygrid="http://www.mygrid.org.uk/mygrid-moby-service#">
  <mygrid:serviceDescription rdf:about="http://sadiframework.org/examples/hello">
   <mygrid:hasServiceNameText rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello</mygrid:hasServiceNameText>
   <mygrid:hasServiceDescriptionText>A simple "Hello</mygrid:hasServiceDescriptionText>
   <mygrid:hasOperation>
     <mygrid:operation rdf:about="http://sadiframework.org/examples/hello#operation">
      <mygrid:outputParameter>
       <mygrid:parameter rdf:about="http://sadiframework.org/examples/hello#output">
        <mygrid:objectType rdf:resource="http://sadiframework.org/examples/hello.owl#GreetedIndividual"/>
       </mygrid:parameter>
A SADI service…

 … responds to POST with service output
          RDF in, RDF out


 <hello:NamedIndividual rdf:about="http://sadiframework.org/examples/hello-input.rdf#1">
   <foaf:name>Guy Incognito</foaf:name>
 </hello:NamedIndividual>




                               <hello:GreetedIndividual rdf:about="http://sadiframework.org/examples/hello-input.rdf#1">
                                 <hello:greeting>Hello, Guy Incognito!</hello:greeting>
                               </hello:GreetedIndividual>
A SADI service…
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:mygrid="http://www.mygrid.org.uk/mygrid-moby-service#">
 <mygrid:serviceDescription rdf:about="http://sadiframework.org/examples/hello">
  <mygrid:hasServiceNameText rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello</mygrid:hasServiceNameText>
  <mygrid:hasServiceDescriptionText>A simple "Hello</mygrid:hasServiceDescriptionText>
  <mygrid:hasOperation>
    <mygrid:operation rdf:about="http://sadiframework.org/examples/hello#operation">
     <mygrid:inputParameter>
       <mygrid:parameter rdf:about="http://sadiframework.org/examples/hello#input">
 http://sadiframework.org/examples/hello.owl#NamedIndividual
        <mygrid:objectType rdf:resource="http://sadiframework.org/examples/hello.owl#NamedIndividual"/>
       </mygrid:parameter>
     </mygrid:inputParameter>
     <mygrid:outputParameter>

 http://sadiframework.org/examples/hello.owl#GreetedIndividual
       <mygrid:parameter rdf:about="http://sadiframework.org/examples/hello#output">
        <mygrid:objectType rdf:resource="http://sadiframework.org/examples/hello.owl#GreetedIndividual"/>
       </mygrid:parameter>
     </mygrid:outputParameter>
    </mygrid:operation>
  </mygrid:hasOperation>
 </mygrid:serviceDescription>
</rdf:RDF>
A SADI service…

 … has an input OWL class
         describes the RDF it consumes
         property restrictions characterize the data it needs


 <owl:Class rdf:ID="NamedIndividual">
   <owl:equivalentClass>
      <owl:Restriction>

                          http://xmlns.com/foaf/0.1/name
        <owl:onProperty rdf:resource="http://xmlns.com/foaf/0.1/name"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:minCardinality>
      </owl:Restriction>
   </owl:equivalentClass>
 </owl:Class>
A SADI service…

 … has an output OWL class
         describes the RDF it produces
         property restrictions characterize the data it provides


 <owl:Class rdf:ID="GreetedIndividual">
   <owl:equivalentClass>
      <owl:Restriction>

         http://sadiframework.org/examples/hello.owl#greeting
        <owl:onProperty rdf:resource="#greeting"/>
        <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:minCardinality>
      </owl:Restriction>
   </owl:equivalentClass>
 </owl:Class>
<rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:regress="http://sadiframework.org/examples/regression.owl#">
               <regress:PairedValueCollection rdf:about="http://sadiframework.org/examples/input1">
                 <regress:element>
                  <regress:PairedValue>
                    <regress:x rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</regress:x>
                    <regress:y rdf:datatype="http://www.w3.org/2001/XMLSchema#int">2</regress:y>
                  </regress:PairedValue>
                 </regress:element>
                 <regress:element>
                   <regress:PairedValue>
                    <regress:x rdf:datatype="http://www.w3.org/2001/XMLSchema#int">3</regress:x>
                    <regress:y rdf:datatype="http://www.w3.org/2001/XMLSchema#int">5</regress:y>
                  </regress:PairedValue>
                 </regress:element>
               </regress:PairedValueCollection>
  </rdf:RDF>




                                                       #1
                                                                                                                                                                                                      Service
                                                                                                           <rdf:RDF
                                                                                                               xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                                                                                                               xmlns:regress="http://sadiframework.org/examples/regression.owl#">
                                                                                                             <regress:OutputClass rdf:about="http://sadiframework.org/examples/input1">
                                                                                                               <regress:hasRegressionModel>
                                                                                                                <regress:LinearRegressionModel>
                                                                                                                                                    #1
                                                                                                                  <regress:intercept rdf:datatype="http://www.w3.org/2001/XMLSchema#double">0.5</regress:intercept>
                                                                                                                  <regress:slope rdf:datatype="http://www.w3.org/2001/XMLSchema#double">1.5</regress:slope>
                                                                                                                 </regress:LinearRegressionModel>
                                                                                                               </regress:hasRegressionModel>
                                                                                                             </regress:OutputClass>
                                                                                                           </rdf:RDF>



Client



                                                                                                                                                                                                                      #

                                                                                                      #1
OWL classes in SADI…

 … are local to individual services
     one service’s world-view can conflict with another,
      but a client can use both
     not dogmatically; some types are shared
      (e.g. database records)

 … use global properties
     maximize interoperability
     represent community agreement
Input OWL classes in SADI…

 … are dynamically assignable
    property restrictions are sufficient for membership
    another way to discover services:
     what can I get with what I have now?
There’s nothing to
        it.
SHARE
Semantic Health And Research Environment
• SPARQL engine
 •   triple patterns are matched against service descriptions
 •   knowledge base is dynamically populated
 •   queries can contain OWL classes,
      which are expanded to the required triple patterns
 •   query is optimized to minimize the number of service calls
      and the amount of data sent over the network
PREFIX sadi: <http://sadiframework.org/ontologies/predicates.owl#>
PREFIX dumontier: <http://ontology.dumontierlab.com/>
PREFIX kegg: <http://lsrn.org/KEGG_PATHWAY:>
SELECT ?gene ?protein ?seq
WHERE {

   kegg:hsa00232 dumontier:hasParticipant ?gene .

   ?gene sadi:encodes ?protein .

   ?protein sadi:hasSequence ?seq
}                                                                    Service




                                                     Service



           Service
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
SELECT ?patient ?bmi
FROM <http://biordf.net/cardioSHARE/patients.rdf>
WHERE {
   ?patient rdf:type patients:AtRiskPatient .
   ?patient bmi:BMI ?bmi
}
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                                        PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                                        PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                                        SELECT ?patient ?bmi
                                        FROM <http://biordf.net/cardioSHARE/patients.rdf>
                                        WHERE {
                                        
   ?patient rdf:type patients:AtRiskPatient .
                                        
   ?patient bmi:BMI ?bmi
                                        }




1. initialize an empty knowledge base
   backed by an OWL reasoner

2. load URLs in FROM clauses
    http://biordf.net/cardioSHARE/patients.rdf
        <rdf:Description rdf:ID="patient6">
         <mged:has_height>
          <mged:Measurement>
           <mged:has_units rdf:resource="&mged;m"/>
           <mged:has_value>1.8034</mged:has_value>
          </mged:Measurement>
         </mged:has_height>
         <mged:has_mass>
          <mged:Measurement>
           <mged:has_units rdf:resource="&mged;kg"/>
           <mged:has_value>73.9355563</mged:has_value>
          </mged:Measurement>
         </mged:has_mass>
         <rdfs:label>patient #6</rdfs:label>
         <rdfs:comment>I am not a number, I am a free man!</rdfs:comment>
        </rdf:Description>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                          PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                          SELECT ?patient ?bmi
                          FROM <http://biordf.net/cardioSHARE/patients.rdf>
                          WHERE {
                          
   ?patient rdf:type patients:AtRiskPatient .
                          
   ?patient bmi:BMI ?bmi
                          }




3. select next triple pattern
    ?patient rdf:type patients:AtRiskPatient


4. process pattern
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                                       PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                                       PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                                       SELECT ?patient ?bmi
                                       FROM <http://biordf.net/cardioSHARE/patients.rdf>
                                       WHERE {
                                       
   ?patient rdf:type patients:AtRiskPatient .
                                       
   ?patient bmi:BMI ?bmi .
                                       }   ?patient bmi:BMI ?x
                                       }


5. decompose OWL class
   http://biordf.net/cardioSHARE/patients.owl#AtRiskPatient
   <owl:Class rdf:ID="AtRiskPatient">
    <rdfs:label>A patient at risk for some condition</rdfs:label>
    <owl:equivalentClass>
     <owl:Restriction>
      <owl:onProperty rdf:resource="&bmi;BMI"/>

         BMI some double[> 25]
      <owl:someValuesFrom>
       <rdfs:Datatype>
         <owl:onDatatype rdf:resource="&xsd;double"/>
         <owl:withRestrictions rdf:parseType="Collection">
          <rdf:Description>
            <xsd:minExclusive rdf:datatype="&xsd;double">25</xsd:minExclusive>
          </rdf:Description>
         </owl:withRestrictions>
       </rdfs:Datatype>
      </owl:someValuesFrom>
     </owl:Restriction>
    </owl:equivalentClass>
   </owl:Class>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                            PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                            PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                            SELECT ?patient ?bmi
                            FROM <http://biordf.net/cardioSHARE/patients.rdf>
                            WHERE {
                            
   ?patient rdf:type patients:AtRiskPatient .
                            
   ?patient bmi:BMI ?bmi .
                                ?patient bmi:BMI ?x
                            }




6. select next triple pattern
    ?patient bmi:BMI ?bmi


7. process pattern
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                             PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                             PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                             SELECT ?patient ?bmi
                             FROM <http://biordf.net/cardioSHARE/patients.rdf>
                             WHERE {
                             
   ?patient rdf:type patients:AtRiskPatient .
                             
   ?patient bmi:BMI ?bmi .
                                 ?patient bmi:BMI ?x
                             }




8. find services that attach the predicate
    bmi:BMI →
      http://sadiframework.org/examples/calculateBMI


9. find inputs to service
    use ?patient candidates
    no candidates; find instances of the service’s input class
      http://sadiframework.org/examples/bmi.owl#InputClass
    filter inputs previously sent to this service
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                           PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                           PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                           SELECT ?patient ?bmi
                           FROM <http://biordf.net/cardioSHARE/patients.rdf>
                           WHERE {
                           
   ?patient rdf:type patients:AtRiskPatient .
                           
   ?patient bmi:BMI ?bmi .
                               ?patient bmi:BMI ?x
                           }




10.invoke the service
   assemble minimal RDF that still satisfies the input class
   POST that RDF and add the response to the KB


11.update variable candidates
   use current triple pattern
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                          PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                          SELECT ?patient ?bmi
                          FROM <http://biordf.net/cardioSHARE/patients.rdf>
                          WHERE {
                          
   ?patient rdf:type patients:AtRiskPatient .
                          
   ?patient bmi:BMI ?bmi .
                              ?patient bmi:BMI ?x
                          }




12.select next triple pattern
    ?patient bmi:BMI ?x


13.process pattern
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                            PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                            PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                            SELECT ?patient ?bmi
                            FROM <http://biordf.net/cardioSHARE/patients.rdf>
                            WHERE {
                            
   ?patient rdf:type patients:AtRiskPatient .
                            
   ?patient bmi:BMI ?bmi .
                                ?patient bmi:BMI ?x
                            }




14.find services that attach the predicate
   bmi:BMI →
     http://sadiframework.org/examples/calculateBMI


15.find inputs to service
   use ?patient candidates
   filter inputs previously sent to this service
   nothing to do
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                         PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#>
                         PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#>
                         SELECT ?patient ?bmi
                         FROM <http://biordf.net/cardioSHARE/patients.rdf>
                         WHERE {
                         
   ?patient rdf:type patients:AtRiskPatient .
                         
   ?patient bmi:BMI ?bmi .
                             ?patient bmi:BMI ?x
                         }




16.select next triple pattern
    no more patterns


17.execute original SPARQL query
    using the populated knowledge base and a
     conventional SPARQL reasoner
OWL classes in SHARE queries…

 … are personal
     but defined in terms of common properties

 … are shared
     class URIs resolve to their definitions
     anyone can use your class with their data

 … are flexible
     disagree with a definition? try a new one!
OWL classes in SHARE queries…



 … are workflows
    describe the data that’s needed, not the services to call
      (though the service chain can be reconstructed)

 … are hypotheses?
    “what is” → “what might be”
Acknowledgements
            This research is supported by The Heart + Stroke Foundation of BC and Yukon, Microsoft Research,
The Canadian Institutes of Health Research, The Natural Sciences and Engineering Research Council of Canada and CANARIE.

More Related Content

Similar to SHARE & the Semantic Web — This Time it's Personal

TDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em RubyTDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
Fabio Akita
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
IMC Institute
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
Pat Patterson
 
A Hands On Overview Of The Semantic Web
A Hands On Overview Of The Semantic WebA Hands On Overview Of The Semantic Web
A Hands On Overview Of The Semantic Web
Shamod Lacoul
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic webMarakana Inc.
 
Linked data: spreading data over the web
Linked data: spreading data over the webLinked data: spreading data over the web
Linked data: spreading data over the webshellac
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
Visual Engineering
 
AngularJS Basic Training
AngularJS Basic TrainingAngularJS Basic Training
AngularJS Basic Training
Cornel Stefanache
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui framework
HongSeong Jeon
 
JS-05-Handlebars.ppt
JS-05-Handlebars.pptJS-05-Handlebars.ppt
JS-05-Handlebars.ppt
fakeaccount225095
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
Sagara Gunathunga
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
Nick Sieger
 
Who am I? Who are you? Who is anybody?
Who am I? Who are you? Who is anybody?Who am I? Who are you? Who is anybody?
Who am I? Who are you? Who is anybody?
Paul Downey
 
Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
Filip Janevski
 
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIsJosef Petrák
 
RDF Tutorial - SPARQL 20091031
RDF Tutorial - SPARQL 20091031RDF Tutorial - SPARQL 20091031
RDF Tutorial - SPARQL 20091031
kwangsub kim
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Arun Gupta
 
Semantic Web(Web 3.0) SPARQL
Semantic Web(Web 3.0) SPARQLSemantic Web(Web 3.0) SPARQL
Semantic Web(Web 3.0) SPARQL
Daniel D.J. UM
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
Dr Nic Williams
 

Similar to SHARE & the Semantic Web — This Time it's Personal (20)

TDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em RubyTDC 2012 - Patterns e Anti-Patterns em Ruby
TDC 2012 - Patterns e Anti-Patterns em Ruby
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
A Hands On Overview Of The Semantic Web
A Hands On Overview Of The Semantic WebA Hands On Overview Of The Semantic Web
A Hands On Overview Of The Semantic Web
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic web
 
Linked data: spreading data over the web
Linked data: spreading data over the webLinked data: spreading data over the web
Linked data: spreading data over the web
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
 
AngularJS Basic Training
AngularJS Basic TrainingAngularJS Basic Training
AngularJS Basic Training
 
Jlook web ui framework
Jlook web ui frameworkJlook web ui framework
Jlook web ui framework
 
JS-05-Handlebars.ppt
JS-05-Handlebars.pptJS-05-Handlebars.ppt
JS-05-Handlebars.ppt
 
Java colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rsJava colombo-deep-dive-into-jax-rs
Java colombo-deep-dive-into-jax-rs
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
 
Who am I? Who are you? Who is anybody?
Who am I? Who are you? Who is anybody?Who am I? Who are you? Who is anybody?
Who am I? Who are you? Who is anybody?
 
Basics of AngularJS
Basics of AngularJSBasics of AngularJS
Basics of AngularJS
 
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
2011 4IZ440 Semantic Web – RDF, SPARQL, and software APIs
 
RDF Tutorial - SPARQL 20091031
RDF Tutorial - SPARQL 20091031RDF Tutorial - SPARQL 20091031
RDF Tutorial - SPARQL 20091031
 
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
 
Semantic Web(Web 3.0) SPARQL
Semantic Web(Web 3.0) SPARQLSemantic Web(Web 3.0) SPARQL
Semantic Web(Web 3.0) SPARQL
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
 
The Rails Way
The Rails WayThe Rails Way
The Rails Way
 

Recently uploaded

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 

Recently uploaded (20)

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 

SHARE & the Semantic Web — This Time it's Personal

  • 1. SHARE & the Semantic Web This Time it’s Personal! http:// sadiframework.org
  • 2. SADI Semantic Automated Discovery & Integration (Semantic Web Services)
  • 3. A SADI service… … is identified by a URI also an HTTP URL http://sadiframework.org/examples/hello
  • 4. A SADI service… … responds to GET with service description RDF document describing the service URI conforms to Feta (BioMoby, myGrid) <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:mygrid="http://www.mygrid.org.uk/mygrid-moby-service#"> <mygrid:serviceDescription rdf:about="http://sadiframework.org/examples/hello"> <mygrid:hasServiceNameText rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello</mygrid:hasServiceNameText> <mygrid:hasServiceDescriptionText>A simple "Hello</mygrid:hasServiceDescriptionText> <mygrid:hasOperation> <mygrid:operation rdf:about="http://sadiframework.org/examples/hello#operation"> <mygrid:outputParameter> <mygrid:parameter rdf:about="http://sadiframework.org/examples/hello#output"> <mygrid:objectType rdf:resource="http://sadiframework.org/examples/hello.owl#GreetedIndividual"/> </mygrid:parameter>
  • 5. A SADI service… … responds to POST with service output RDF in, RDF out <hello:NamedIndividual rdf:about="http://sadiframework.org/examples/hello-input.rdf#1"> <foaf:name>Guy Incognito</foaf:name> </hello:NamedIndividual> <hello:GreetedIndividual rdf:about="http://sadiframework.org/examples/hello-input.rdf#1"> <hello:greeting>Hello, Guy Incognito!</hello:greeting> </hello:GreetedIndividual>
  • 6. A SADI service… <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:mygrid="http://www.mygrid.org.uk/mygrid-moby-service#"> <mygrid:serviceDescription rdf:about="http://sadiframework.org/examples/hello"> <mygrid:hasServiceNameText rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Hello</mygrid:hasServiceNameText> <mygrid:hasServiceDescriptionText>A simple "Hello</mygrid:hasServiceDescriptionText> <mygrid:hasOperation> <mygrid:operation rdf:about="http://sadiframework.org/examples/hello#operation"> <mygrid:inputParameter> <mygrid:parameter rdf:about="http://sadiframework.org/examples/hello#input"> http://sadiframework.org/examples/hello.owl#NamedIndividual <mygrid:objectType rdf:resource="http://sadiframework.org/examples/hello.owl#NamedIndividual"/> </mygrid:parameter> </mygrid:inputParameter> <mygrid:outputParameter> http://sadiframework.org/examples/hello.owl#GreetedIndividual <mygrid:parameter rdf:about="http://sadiframework.org/examples/hello#output"> <mygrid:objectType rdf:resource="http://sadiframework.org/examples/hello.owl#GreetedIndividual"/> </mygrid:parameter> </mygrid:outputParameter> </mygrid:operation> </mygrid:hasOperation> </mygrid:serviceDescription> </rdf:RDF>
  • 7. A SADI service… … has an input OWL class describes the RDF it consumes property restrictions characterize the data it needs <owl:Class rdf:ID="NamedIndividual"> <owl:equivalentClass> <owl:Restriction> http://xmlns.com/foaf/0.1/name <owl:onProperty rdf:resource="http://xmlns.com/foaf/0.1/name"/> <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:minCardinality> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 8. A SADI service… … has an output OWL class describes the RDF it produces property restrictions characterize the data it provides <owl:Class rdf:ID="GreetedIndividual"> <owl:equivalentClass> <owl:Restriction> http://sadiframework.org/examples/hello.owl#greeting <owl:onProperty rdf:resource="#greeting"/> <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:minCardinality> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 9.
  • 10. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:regress="http://sadiframework.org/examples/regression.owl#"> <regress:PairedValueCollection rdf:about="http://sadiframework.org/examples/input1"> <regress:element> <regress:PairedValue> <regress:x rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</regress:x> <regress:y rdf:datatype="http://www.w3.org/2001/XMLSchema#int">2</regress:y> </regress:PairedValue> </regress:element> <regress:element> <regress:PairedValue> <regress:x rdf:datatype="http://www.w3.org/2001/XMLSchema#int">3</regress:x> <regress:y rdf:datatype="http://www.w3.org/2001/XMLSchema#int">5</regress:y> </regress:PairedValue> </regress:element> </regress:PairedValueCollection> </rdf:RDF> #1 Service <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:regress="http://sadiframework.org/examples/regression.owl#"> <regress:OutputClass rdf:about="http://sadiframework.org/examples/input1"> <regress:hasRegressionModel> <regress:LinearRegressionModel> #1 <regress:intercept rdf:datatype="http://www.w3.org/2001/XMLSchema#double">0.5</regress:intercept> <regress:slope rdf:datatype="http://www.w3.org/2001/XMLSchema#double">1.5</regress:slope> </regress:LinearRegressionModel> </regress:hasRegressionModel> </regress:OutputClass> </rdf:RDF> Client # #1
  • 11. OWL classes in SADI… … are local to individual services one service’s world-view can conflict with another, but a client can use both not dogmatically; some types are shared (e.g. database records) … use global properties maximize interoperability represent community agreement
  • 12. Input OWL classes in SADI… … are dynamically assignable property restrictions are sufficient for membership another way to discover services: what can I get with what I have now?
  • 14. SHARE Semantic Health And Research Environment
  • 15. • SPARQL engine • triple patterns are matched against service descriptions • knowledge base is dynamically populated • queries can contain OWL classes, which are expanded to the required triple patterns • query is optimized to minimize the number of service calls and the amount of data sent over the network
  • 16. PREFIX sadi: <http://sadiframework.org/ontologies/predicates.owl#> PREFIX dumontier: <http://ontology.dumontierlab.com/> PREFIX kegg: <http://lsrn.org/KEGG_PATHWAY:> SELECT ?gene ?protein ?seq WHERE { kegg:hsa00232 dumontier:hasParticipant ?gene . ?gene sadi:encodes ?protein . ?protein sadi:hasSequence ?seq } Service Service Service
  • 17. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi }
  • 18. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi } 1. initialize an empty knowledge base backed by an OWL reasoner 2. load URLs in FROM clauses http://biordf.net/cardioSHARE/patients.rdf <rdf:Description rdf:ID="patient6"> <mged:has_height> <mged:Measurement> <mged:has_units rdf:resource="&mged;m"/> <mged:has_value>1.8034</mged:has_value> </mged:Measurement> </mged:has_height> <mged:has_mass> <mged:Measurement> <mged:has_units rdf:resource="&mged;kg"/> <mged:has_value>73.9355563</mged:has_value> </mged:Measurement> </mged:has_mass> <rdfs:label>patient #6</rdfs:label> <rdfs:comment>I am not a number, I am a free man!</rdfs:comment> </rdf:Description>
  • 19. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi } 3. select next triple pattern ?patient rdf:type patients:AtRiskPatient 4. process pattern
  • 20. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . } ?patient bmi:BMI ?x } 5. decompose OWL class http://biordf.net/cardioSHARE/patients.owl#AtRiskPatient <owl:Class rdf:ID="AtRiskPatient"> <rdfs:label>A patient at risk for some condition</rdfs:label> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="&bmi;BMI"/> BMI some double[> 25] <owl:someValuesFrom> <rdfs:Datatype> <owl:onDatatype rdf:resource="&xsd;double"/> <owl:withRestrictions rdf:parseType="Collection"> <rdf:Description> <xsd:minExclusive rdf:datatype="&xsd;double">25</xsd:minExclusive> </rdf:Description> </owl:withRestrictions> </rdfs:Datatype> </owl:someValuesFrom> </owl:Restriction> </owl:equivalentClass> </owl:Class>
  • 21. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . ?patient bmi:BMI ?x } 6. select next triple pattern ?patient bmi:BMI ?bmi 7. process pattern
  • 22. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . ?patient bmi:BMI ?x } 8. find services that attach the predicate bmi:BMI → http://sadiframework.org/examples/calculateBMI 9. find inputs to service use ?patient candidates no candidates; find instances of the service’s input class http://sadiframework.org/examples/bmi.owl#InputClass filter inputs previously sent to this service
  • 23. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . ?patient bmi:BMI ?x } 10.invoke the service assemble minimal RDF that still satisfies the input class POST that RDF and add the response to the KB 11.update variable candidates use current triple pattern
  • 24. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . ?patient bmi:BMI ?x } 12.select next triple pattern ?patient bmi:BMI ?x 13.process pattern
  • 25. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . ?patient bmi:BMI ?x } 14.find services that attach the predicate bmi:BMI → http://sadiframework.org/examples/calculateBMI 15.find inputs to service use ?patient candidates filter inputs previously sent to this service nothing to do
  • 26. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX patients: <http://biordf.net/cardioSHARE/patients.owl#> PREFIX bmi: <http://sadiframework.org/examples/bmi.owl#> SELECT ?patient ?bmi FROM <http://biordf.net/cardioSHARE/patients.rdf> WHERE { ?patient rdf:type patients:AtRiskPatient . ?patient bmi:BMI ?bmi . ?patient bmi:BMI ?x } 16.select next triple pattern no more patterns 17.execute original SPARQL query using the populated knowledge base and a conventional SPARQL reasoner
  • 27. OWL classes in SHARE queries… … are personal but defined in terms of common properties … are shared class URIs resolve to their definitions anyone can use your class with their data … are flexible disagree with a definition? try a new one!
  • 28. OWL classes in SHARE queries… … are workflows describe the data that’s needed, not the services to call (though the service chain can be reconstructed) … are hypotheses? “what is” → “what might be”
  • 29. Acknowledgements This research is supported by The Heart + Stroke Foundation of BC and Yukon, Microsoft Research, The Canadian Institutes of Health Research, The Natural Sciences and Engineering Research Council of Canada and CANARIE.

Editor's Notes

  1. *make it obvious the input and output node are the same(with animation or label)*