SlideShare ist ein Scribd-Unternehmen logo
1 von 29
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.

Weitere ähnliche Inhalte

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

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
Marakana 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 web
shellac
 
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
Josef Petrák
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

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.

Hinweis der Redaktion

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