SlideShare a Scribd company logo
1 of 25
Semantic AtomPub-based Services

                           Markus Lanthaler
© Matt Reinbold




                           Graz University of Technology
Web services are increasingly popular
Twitter      Facebook     Google
15 billion    5 billion   5 billion
 per day      per day     per day
76% of the APIs are RESTful
            [ProgrammableWeb, May 2010]
but
© Nesster
Two Options
Two Options
Exchange of semantically annotated
data through a well-defined interface
SAPS’ Semantic Layer
 SAWSDL          JSON Schema+          …
XML Schema           JSON              …


  Atom             AtomPub          OpenSearch

                   HTTP(S)

                    TCP/IP
pay order
query products


                 Restbucks
<?xml version="1.0" encoding='utf-8'?>
<service xmlns="http://www.w3.org/2007/app"
        xmlns:atom="http://www.w3.org/2005/Atom"
        xmlns:saps="http://www.purl.org/saps">
 <workspace>
   <atom:title>Coffee Shop Service</atom:title>
   <collection href="/products" >
     <atom:title>Products</atom:title>
     [...]
   </collection>
   <collection href="/orders" >
     <atom:title>Orders</atom:title>
     [...]
   </collection>
 </workspace>
</service>
<collection href="/orders" >
  <atom:title>Orders</atom:title>
  <accept saps:schema="/schemas/purchase-order.xsd">
    application/xml
  </accept>
  <categories fixed="yes">
    <atom:category scheme=
       "http://www.purl.org/net/ontology/order.owl#"
      term="http://www.purl.org/net/ontology/
        order.owl#PurchaseOrder"
      label="Orders" />
  </categories>
</collection>
<collection href="/products" >
  <atom:title>Products</atom:title>
  <accept />
  <categories fixed="yes">
    <atom:category
      scheme="http://purl.org/goodrelations/v1#"
      term="http://purl.org/goodrelations/v1#Offering"
      label="Products" />
  </categories>
  <atom:link rel="search"
    type="application/opensearchdescription+xml"
    href="http://api.example.com/productsearch.xml"/>
</collection>
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription
     xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Product Search</ShortName>
  <Description>Search for products</Description>
  <Url xmlns:gr="http://purl.org/goodrelations/v1#"
    type="application/atom+xml;type=feed"
    template="http://api.example.com/?q=
     {searchTerms?}&amp;ean={gr:hasEAN_UCC-13?}" />
</OpenSearchDescription>


GET /?q=&ean=2300000010015 HTTP/1.1
Host: api.example.com
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Search for EAN 2300000010015</title>
  [...]
  <entry>
    <title>Cappuccino</title>
    <summary>A hot cappuccino for 1.99 EUR</summary>
    <id>tag:example.org,2003:3.2397</id>
    <updated>2009-07-31T12:29:29Z</updated>
    <published>2008-12-13T08:29:29-04:00</published>
    <content type="application/xml">
      [...]
    </content>
  </entry>
</feed>
<content type="application/xml">
  <product xmlns="http://example.com/products"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-
         instance"
       xsi:schemaLocation="http://example.com/products
         http://example.com/products.xsd">
     <id>http://api.example.org/products/P4197</id>
     <label>Cappuccino</label>
     <ean>2300000010015</ean>
     <sku>P4197</sku>
     <price>1.99</price>
     <description>...</description>
  </product>
</content>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sawsdl="http://www.w3.org/ns/sawsdl">
  <xsd:element name="product" type="ProductType"
     sawsdl:modelReference="http://purl.org/goodrelations/
       v1#Offering" />
  <xsd:complexType name="ProductType">
    <xsd:sequence>
      <xsd:sequence>
      <xsd:element name="id" type="xsd:anyURI" />
        <xsd:element name="label" type="xsd:string"
           sawsdl:modelReference="http://www.w3.org/2000/
              01/rdf-schema#label" />
        <xsd:element name="ean" type="xsd:string"
           sawsdl:modelReference="http://purl.org/
              goodrelations/v1#hasEAN_UCC-13" />
        <xsd:element name="sku" type="xsd:string"
           sawsdl:modelReference="
              http://purl.org/
                goodrelations/v1#hasStockKeepingUnit
              http://www.purl.org/net/
                ontology/order.owl#PartNumber" />
        <xsd:element name="price" type="xsd:decimal"
           sawsdl:modelReference="http://purl.org/
              goodrelations/v1#hasCurrencyValue" />
        <xsd:element name="description" type="xsd:string"
<collection href="/orders" >
  <atom:title>Orders</atom:title>
  <accept saps:schema="/schemas/purchase-order.xsd">
    application/xml
  </accept>
  [...]
</collection>

POST /orders HTTP/1.1
Host: api.example.com
Content-Type: application/xml
<order xmlns="http://example.com/orders
  [...]
</order>



     <link rel="next http://example.com/ontology/payment"
        href="/order/1684/payment" type="application/xml"
        saps:schema="/schemas/payment.xsd" title="Payment" />
strong emphasis on simplicity




                      discovery and composition
Thank You



© 2011, Markus Lanthaler. Some Rights Reserved.
http://creativecommons.org/licenses/by-nc-sa/3.0/
Questions?




Markus Lanthaler
Markus.Lanthaler@student.TUGraz.at
Image Credits
(1) http://www.flickr.com/photos/furryscalyman/3695730985/
(3) Adapted from “Two Billion is Cool,” M. Thomson. Available:
    http://corp.klout.com/blog/2011/07/two-billion-is-cool/
(6) http://www.flickr.com/photos/nesster/3168425434/

More Related Content

What's hot

Box connector Mule ESB Integration
Box connector Mule ESB IntegrationBox connector Mule ESB Integration
Box connector Mule ESB IntegrationAnilKumar Etagowni
 
Introduction to ajax
Introduction to ajaxIntroduction to ajax
Introduction to ajaxNir Elbaz
 
Ajax Introduction Presentation
Ajax   Introduction   PresentationAjax   Introduction   Presentation
Ajax Introduction Presentationthinkphp
 
Ajax presentation
Ajax presentationAjax presentation
Ajax presentationengcs2008
 
Using schemas in parsing xml part 2
Using schemas in parsing xml part 2Using schemas in parsing xml part 2
Using schemas in parsing xml part 2Alex Fernandez
 
Summer - The HTML5 Library for Java and Scala
Summer - The HTML5 Library for Java and ScalaSummer - The HTML5 Library for Java and Scala
Summer - The HTML5 Library for Java and Scalarostislav
 
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017Codemotion
 
ASP.NET Routing & MVC
ASP.NET Routing & MVCASP.NET Routing & MVC
ASP.NET Routing & MVCEmad Alashi
 
Ajax Technology
Ajax TechnologyAjax Technology
Ajax TechnologyZia_Rehman
 
SharePoint 2010 Content Query Web Part
SharePoint 2010 Content Query Web PartSharePoint 2010 Content Query Web Part
SharePoint 2010 Content Query Web PartKim Frehe
 
Implicit objects advance Java
Implicit objects advance JavaImplicit objects advance Java
Implicit objects advance JavaDarshit Metaliya
 
Request dispacther interface ppt
Request dispacther interface pptRequest dispacther interface ppt
Request dispacther interface pptTaha Malampatti
 

What's hot (20)

Box connector Mule ESB Integration
Box connector Mule ESB IntegrationBox connector Mule ESB Integration
Box connector Mule ESB Integration
 
Introduction to ajax
Introduction to ajaxIntroduction to ajax
Introduction to ajax
 
Ajax Introduction Presentation
Ajax   Introduction   PresentationAjax   Introduction   Presentation
Ajax Introduction Presentation
 
Ajax Ppt 1
Ajax Ppt 1Ajax Ppt 1
Ajax Ppt 1
 
Ajax presentation
Ajax presentationAjax presentation
Ajax presentation
 
Using schemas in parsing xml part 2
Using schemas in parsing xml part 2Using schemas in parsing xml part 2
Using schemas in parsing xml part 2
 
Summer - The HTML5 Library for Java and Scala
Summer - The HTML5 Library for Java and ScalaSummer - The HTML5 Library for Java and Scala
Summer - The HTML5 Library for Java and Scala
 
Inner core of Ajax
Inner core of Ajax Inner core of Ajax
Inner core of Ajax
 
Ajax Presentation
Ajax PresentationAjax Presentation
Ajax Presentation
 
Jsp intro
Jsp introJsp intro
Jsp intro
 
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
Going fullstack React(ive) - Paulo Lopes - Codemotion Amsterdam 2017
 
ASP.NET Routing & MVC
ASP.NET Routing & MVCASP.NET Routing & MVC
ASP.NET Routing & MVC
 
Ajax
AjaxAjax
Ajax
 
Ajax ppt
Ajax pptAjax ppt
Ajax ppt
 
Ajax Technology
Ajax TechnologyAjax Technology
Ajax Technology
 
SharePoint 2010 Content Query Web Part
SharePoint 2010 Content Query Web PartSharePoint 2010 Content Query Web Part
SharePoint 2010 Content Query Web Part
 
AJAX
AJAXAJAX
AJAX
 
Implicit objects advance Java
Implicit objects advance JavaImplicit objects advance Java
Implicit objects advance Java
 
Implicit object.pptx
Implicit object.pptxImplicit object.pptx
Implicit object.pptx
 
Request dispacther interface ppt
Request dispacther interface pptRequest dispacther interface ppt
Request dispacther interface ppt
 

Viewers also liked

The web – A hypermedia story
The web – A hypermedia storyThe web – A hypermedia story
The web – A hypermedia storyRuben Verborgh
 
RESTdesc – Efficient runtime service discovery and consumption
RESTdesc – Efficient runtime service discovery and consumptionRESTdesc – Efficient runtime service discovery and consumption
RESTdesc – Efficient runtime service discovery and consumptionRuben Verborgh
 
Adrs Presentation March 2008
Adrs Presentation March 2008Adrs Presentation March 2008
Adrs Presentation March 2008guestabd20
 
Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...
Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...
Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...Markus Lanthaler
 
Initial Usage Analysis of DBpedia's Triple Pattern Fragments
Initial Usage Analysis of DBpedia's Triple Pattern FragmentsInitial Usage Analysis of DBpedia's Triple Pattern Fragments
Initial Usage Analysis of DBpedia's Triple Pattern FragmentsRuben Verborgh
 
Semantic Web Services: State of the Art
Semantic Web Services: State of the ArtSemantic Web Services: State of the Art
Semantic Web Services: State of the ArtMarkus Lanthaler
 
Live DBpedia querying with high availability
Live DBpedia querying with high availabilityLive DBpedia querying with high availability
Live DBpedia querying with high availabilityRuben Verborgh
 
A Semantic Description Language for RESTful Data Services to Combat Semaphobia
A Semantic Description Language for RESTful Data Services to Combat SemaphobiaA Semantic Description Language for RESTful Data Services to Combat Semaphobia
A Semantic Description Language for RESTful Data Services to Combat SemaphobiaMarkus Lanthaler
 
Hypermedia Cannot be the Engine
Hypermedia Cannot be the EngineHypermedia Cannot be the Engine
Hypermedia Cannot be the EngineRuben Verborgh
 
The Lonesome LOD Cloud
The Lonesome LOD CloudThe Lonesome LOD Cloud
The Lonesome LOD CloudRuben Verborgh
 
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012Alexandre Morgaut
 
A Deep Dive into JSON-LD and Hydra
A Deep Dive into JSON-LD and HydraA Deep Dive into JSON-LD and Hydra
A Deep Dive into JSON-LD and HydraMarkus Lanthaler
 
Web Standards adoption in the AR market
Web Standards adoption in the AR marketWeb Standards adoption in the AR market
Web Standards adoption in the AR marketRob Manson
 
LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...
LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...
LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...Fabio Benedetti
 
Linked Data Generation Process
Linked Data Generation ProcessLinked Data Generation Process
Linked Data Generation ProcessLD4SC
 
Distributed Affordance
Distributed AffordanceDistributed Affordance
Distributed AffordanceRuben Verborgh
 
Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)Phil Calçado
 
What is Hydra?
What is Hydra?What is Hydra?
What is Hydra?Findwise
 

Viewers also liked (20)

The web – A hypermedia story
The web – A hypermedia storyThe web – A hypermedia story
The web – A hypermedia story
 
RESTdesc – Efficient runtime service discovery and consumption
RESTdesc – Efficient runtime service discovery and consumptionRESTdesc – Efficient runtime service discovery and consumption
RESTdesc – Efficient runtime service discovery and consumption
 
Adrs Presentation March 2008
Adrs Presentation March 2008Adrs Presentation March 2008
Adrs Presentation March 2008
 
Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...
Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...
Aligning Web Services with the Semantic Web to Create a Global Read-Write Gra...
 
Initial Usage Analysis of DBpedia's Triple Pattern Fragments
Initial Usage Analysis of DBpedia's Triple Pattern FragmentsInitial Usage Analysis of DBpedia's Triple Pattern Fragments
Initial Usage Analysis of DBpedia's Triple Pattern Fragments
 
Semantic Web Services: State of the Art
Semantic Web Services: State of the ArtSemantic Web Services: State of the Art
Semantic Web Services: State of the Art
 
Reasoned SPARQL
Reasoned SPARQLReasoned SPARQL
Reasoned SPARQL
 
Live DBpedia querying with high availability
Live DBpedia querying with high availabilityLive DBpedia querying with high availability
Live DBpedia querying with high availability
 
A Semantic Description Language for RESTful Data Services to Combat Semaphobia
A Semantic Description Language for RESTful Data Services to Combat SemaphobiaA Semantic Description Language for RESTful Data Services to Combat Semaphobia
A Semantic Description Language for RESTful Data Services to Combat Semaphobia
 
Hypermedia Cannot be the Engine
Hypermedia Cannot be the EngineHypermedia Cannot be the Engine
Hypermedia Cannot be the Engine
 
F-interop Meetup
F-interop MeetupF-interop Meetup
F-interop Meetup
 
The Lonesome LOD Cloud
The Lonesome LOD CloudThe Lonesome LOD Cloud
The Lonesome LOD Cloud
 
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012
 
A Deep Dive into JSON-LD and Hydra
A Deep Dive into JSON-LD and HydraA Deep Dive into JSON-LD and Hydra
A Deep Dive into JSON-LD and Hydra
 
Web Standards adoption in the AR market
Web Standards adoption in the AR marketWeb Standards adoption in the AR market
Web Standards adoption in the AR market
 
LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...
LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...
LODeX: Schema Summarization and automatic SPARQL query generation for Linked ...
 
Linked Data Generation Process
Linked Data Generation ProcessLinked Data Generation Process
Linked Data Generation Process
 
Distributed Affordance
Distributed AffordanceDistributed Affordance
Distributed Affordance
 
Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)Lisp Macros in 20 Minutes (Featuring Clojure)
Lisp Macros in 20 Minutes (Featuring Clojure)
 
What is Hydra?
What is Hydra?What is Hydra?
What is Hydra?
 

Similar to SAPS - Semantic AtomPub-based Services

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
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014Dariusz Kalbarczyk
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortalJennifer Bourey
 
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixEasy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixelliando dias
 
Constraints Make You Sexy - What is Rest
Constraints Make You Sexy  - What is RestConstraints Make You Sexy  - What is Rest
Constraints Make You Sexy - What is Restanorqiu
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauSpiffy
 
Microsoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour GenovaMicrosoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour Genovaantimo musone
 
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17GreeceJS
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jerseyb_kathir
 
Back to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOABack to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOASage Computing Services
 
Java Technology
Java TechnologyJava Technology
Java Technologyifnu bima
 
Overview of RESTful web services
Overview of RESTful web servicesOverview of RESTful web services
Overview of RESTful web servicesnbuddharaju
 
Java Web Development with Stripes
Java Web Development with StripesJava Web Development with Stripes
Java Web Development with StripesSamuel Santos
 
Enterprise integration options with Smallworld
Enterprise integration options with SmallworldEnterprise integration options with Smallworld
Enterprise integration options with SmallworldPeter Batty
 
Enterprise integration options with Smallworld
Enterprise integration options with SmallworldEnterprise integration options with Smallworld
Enterprise integration options with SmallworldPeter Batty
 

Similar to SAPS - Semantic AtomPub-based Services (20)

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)
 
Angular js
Angular jsAngular js
Angular js
 
AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014AngularJS Mobile Warsaw 20-10-2014
AngularJS Mobile Warsaw 20-10-2014
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixEasy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
 
Constraints Make You Sexy - What is Rest
Constraints Make You Sexy  - What is RestConstraints Make You Sexy  - What is Rest
Constraints Make You Sexy - What is Rest
 
ASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin LauASP.NET Overview - Alvin Lau
ASP.NET Overview - Alvin Lau
 
Ws rest
Ws restWs rest
Ws rest
 
Camel as a_glue
Camel as a_glueCamel as a_glue
Camel as a_glue
 
Microsoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour GenovaMicrosoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour Genova
 
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
 
Google Polymer Framework
Google Polymer FrameworkGoogle Polymer Framework
Google Polymer Framework
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using JerseyDeveloping RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
 
Back to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOABack to basics: Simple database web services without the need for SOA
Back to basics: Simple database web services without the need for SOA
 
Java Technology
Java TechnologyJava Technology
Java Technology
 
Overview of RESTful web services
Overview of RESTful web servicesOverview of RESTful web services
Overview of RESTful web services
 
Java Web Development with Stripes
Java Web Development with StripesJava Web Development with Stripes
Java Web Development with Stripes
 
Intro to JavaScript
Intro to JavaScriptIntro to JavaScript
Intro to JavaScript
 
Enterprise integration options with Smallworld
Enterprise integration options with SmallworldEnterprise integration options with Smallworld
Enterprise integration options with Smallworld
 
Enterprise integration options with Smallworld
Enterprise integration options with SmallworldEnterprise integration options with Smallworld
Enterprise integration options with Smallworld
 

More from Markus Lanthaler

From Strings to Things to a Web of Services
From Strings to Things to a Web of ServicesFrom Strings to Things to a Web of Services
From Strings to Things to a Web of ServicesMarkus Lanthaler
 
The Web Is Changing — From Strings to Things
The Web Is Changing — From Strings to ThingsThe Web Is Changing — From Strings to Things
The Web Is Changing — From Strings to ThingsMarkus Lanthaler
 
Why and How to Optimize Your Data Architecture for an Integrated Future
Why and How to Optimize Your Data Architecture for an Integrated FutureWhy and How to Optimize Your Data Architecture for an Integrated Future
Why and How to Optimize Your Data Architecture for an Integrated FutureMarkus Lanthaler
 
Creating Awesome Web APIs is a Breeze
Creating Awesome Web APIs is a BreezeCreating Awesome Web APIs is a Breeze
Creating Awesome Web APIs is a BreezeMarkus Lanthaler
 
Stop Reinventing the Wheel! Use Linked Data to Build Better APIs
Stop Reinventing the Wheel! Use Linked Data to Build Better APIsStop Reinventing the Wheel! Use Linked Data to Build Better APIs
Stop Reinventing the Wheel! Use Linked Data to Build Better APIsMarkus Lanthaler
 
The Web 3.0 is just around the corner. Be prepared!
The Web 3.0 is just around the corner. Be prepared!The Web 3.0 is just around the corner. Be prepared!
The Web 3.0 is just around the corner. Be prepared!Markus Lanthaler
 
Full-on Hypermedia APIs with Hydra
Full-on Hypermedia APIs with HydraFull-on Hypermedia APIs with Hydra
Full-on Hypermedia APIs with HydraMarkus Lanthaler
 
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and HydraBuilding Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and HydraMarkus Lanthaler
 
Creating 3rd Generation Web APIs with Hydra
Creating 3rd Generation Web APIs with HydraCreating 3rd Generation Web APIs with Hydra
Creating 3rd Generation Web APIs with HydraMarkus Lanthaler
 
Model Your Application Domain, Not Your JSON Structures
Model Your Application Domain, Not Your JSON StructuresModel Your Application Domain, Not Your JSON Structures
Model Your Application Domain, Not Your JSON StructuresMarkus Lanthaler
 
Hydra: A Vocabulary for Hypermedia-Driven Web APIs
Hydra: A Vocabulary for Hypermedia-Driven Web APIsHydra: A Vocabulary for Hypermedia-Driven Web APIs
Hydra: A Vocabulary for Hypermedia-Driven Web APIsMarkus Lanthaler
 
A Web of Things to Reduce Energy Wastage
A Web of Things to Reduce Energy WastageA Web of Things to Reduce Energy Wastage
A Web of Things to Reduce Energy WastageMarkus Lanthaler
 
JSON-LD for RESTful services
JSON-LD for RESTful servicesJSON-LD for RESTful services
JSON-LD for RESTful servicesMarkus Lanthaler
 
Towards a RESTful Service Ecosystem
Towards a RESTful Service EcosystemTowards a RESTful Service Ecosystem
Towards a RESTful Service EcosystemMarkus Lanthaler
 

More from Markus Lanthaler (14)

From Strings to Things to a Web of Services
From Strings to Things to a Web of ServicesFrom Strings to Things to a Web of Services
From Strings to Things to a Web of Services
 
The Web Is Changing — From Strings to Things
The Web Is Changing — From Strings to ThingsThe Web Is Changing — From Strings to Things
The Web Is Changing — From Strings to Things
 
Why and How to Optimize Your Data Architecture for an Integrated Future
Why and How to Optimize Your Data Architecture for an Integrated FutureWhy and How to Optimize Your Data Architecture for an Integrated Future
Why and How to Optimize Your Data Architecture for an Integrated Future
 
Creating Awesome Web APIs is a Breeze
Creating Awesome Web APIs is a BreezeCreating Awesome Web APIs is a Breeze
Creating Awesome Web APIs is a Breeze
 
Stop Reinventing the Wheel! Use Linked Data to Build Better APIs
Stop Reinventing the Wheel! Use Linked Data to Build Better APIsStop Reinventing the Wheel! Use Linked Data to Build Better APIs
Stop Reinventing the Wheel! Use Linked Data to Build Better APIs
 
The Web 3.0 is just around the corner. Be prepared!
The Web 3.0 is just around the corner. Be prepared!The Web 3.0 is just around the corner. Be prepared!
The Web 3.0 is just around the corner. Be prepared!
 
Full-on Hypermedia APIs with Hydra
Full-on Hypermedia APIs with HydraFull-on Hypermedia APIs with Hydra
Full-on Hypermedia APIs with Hydra
 
Building Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and HydraBuilding Next-Generation Web APIs with JSON-LD and Hydra
Building Next-Generation Web APIs with JSON-LD and Hydra
 
Creating 3rd Generation Web APIs with Hydra
Creating 3rd Generation Web APIs with HydraCreating 3rd Generation Web APIs with Hydra
Creating 3rd Generation Web APIs with Hydra
 
Model Your Application Domain, Not Your JSON Structures
Model Your Application Domain, Not Your JSON StructuresModel Your Application Domain, Not Your JSON Structures
Model Your Application Domain, Not Your JSON Structures
 
Hydra: A Vocabulary for Hypermedia-Driven Web APIs
Hydra: A Vocabulary for Hypermedia-Driven Web APIsHydra: A Vocabulary for Hypermedia-Driven Web APIs
Hydra: A Vocabulary for Hypermedia-Driven Web APIs
 
A Web of Things to Reduce Energy Wastage
A Web of Things to Reduce Energy WastageA Web of Things to Reduce Energy Wastage
A Web of Things to Reduce Energy Wastage
 
JSON-LD for RESTful services
JSON-LD for RESTful servicesJSON-LD for RESTful services
JSON-LD for RESTful services
 
Towards a RESTful Service Ecosystem
Towards a RESTful Service EcosystemTowards a RESTful Service Ecosystem
Towards a RESTful Service Ecosystem
 

Recently uploaded

Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Recently uploaded (20)

Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

SAPS - Semantic AtomPub-based Services

  • 1. Semantic AtomPub-based Services Markus Lanthaler © Matt Reinbold Graz University of Technology
  • 2. Web services are increasingly popular
  • 3. Twitter Facebook Google 15 billion 5 billion 5 billion per day per day per day
  • 4. 76% of the APIs are RESTful [ProgrammableWeb, May 2010]
  • 5. but
  • 8.
  • 10.
  • 11. Exchange of semantically annotated data through a well-defined interface
  • 12. SAPS’ Semantic Layer SAWSDL JSON Schema+ … XML Schema JSON … Atom AtomPub OpenSearch HTTP(S) TCP/IP
  • 14. <?xml version="1.0" encoding='utf-8'?> <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:saps="http://www.purl.org/saps"> <workspace> <atom:title>Coffee Shop Service</atom:title> <collection href="/products" > <atom:title>Products</atom:title> [...] </collection> <collection href="/orders" > <atom:title>Orders</atom:title> [...] </collection> </workspace> </service>
  • 15. <collection href="/orders" > <atom:title>Orders</atom:title> <accept saps:schema="/schemas/purchase-order.xsd"> application/xml </accept> <categories fixed="yes"> <atom:category scheme= "http://www.purl.org/net/ontology/order.owl#" term="http://www.purl.org/net/ontology/ order.owl#PurchaseOrder" label="Orders" /> </categories> </collection>
  • 16. <collection href="/products" > <atom:title>Products</atom:title> <accept /> <categories fixed="yes"> <atom:category scheme="http://purl.org/goodrelations/v1#" term="http://purl.org/goodrelations/v1#Offering" label="Products" /> </categories> <atom:link rel="search" type="application/opensearchdescription+xml" href="http://api.example.com/productsearch.xml"/> </collection>
  • 17. <?xml version="1.0" encoding="UTF-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> <ShortName>Product Search</ShortName> <Description>Search for products</Description> <Url xmlns:gr="http://purl.org/goodrelations/v1#" type="application/atom+xml;type=feed" template="http://api.example.com/?q= {searchTerms?}&amp;ean={gr:hasEAN_UCC-13?}" /> </OpenSearchDescription> GET /?q=&ean=2300000010015 HTTP/1.1 Host: api.example.com
  • 18. <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title type="text">Search for EAN 2300000010015</title> [...] <entry> <title>Cappuccino</title> <summary>A hot cappuccino for 1.99 EUR</summary> <id>tag:example.org,2003:3.2397</id> <updated>2009-07-31T12:29:29Z</updated> <published>2008-12-13T08:29:29-04:00</published> <content type="application/xml"> [...] </content> </entry> </feed>
  • 19. <content type="application/xml"> <product xmlns="http://example.com/products" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:schemaLocation="http://example.com/products http://example.com/products.xsd"> <id>http://api.example.org/products/P4197</id> <label>Cappuccino</label> <ean>2300000010015</ean> <sku>P4197</sku> <price>1.99</price> <description>...</description> </product> </content>
  • 20. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sawsdl="http://www.w3.org/ns/sawsdl"> <xsd:element name="product" type="ProductType" sawsdl:modelReference="http://purl.org/goodrelations/ v1#Offering" /> <xsd:complexType name="ProductType"> <xsd:sequence> <xsd:sequence> <xsd:element name="id" type="xsd:anyURI" /> <xsd:element name="label" type="xsd:string" sawsdl:modelReference="http://www.w3.org/2000/ 01/rdf-schema#label" /> <xsd:element name="ean" type="xsd:string" sawsdl:modelReference="http://purl.org/ goodrelations/v1#hasEAN_UCC-13" /> <xsd:element name="sku" type="xsd:string" sawsdl:modelReference=" http://purl.org/ goodrelations/v1#hasStockKeepingUnit http://www.purl.org/net/ ontology/order.owl#PartNumber" /> <xsd:element name="price" type="xsd:decimal" sawsdl:modelReference="http://purl.org/ goodrelations/v1#hasCurrencyValue" /> <xsd:element name="description" type="xsd:string"
  • 21. <collection href="/orders" > <atom:title>Orders</atom:title> <accept saps:schema="/schemas/purchase-order.xsd"> application/xml </accept> [...] </collection> POST /orders HTTP/1.1 Host: api.example.com Content-Type: application/xml <order xmlns="http://example.com/orders [...] </order> <link rel="next http://example.com/ontology/payment" href="/order/1684/payment" type="application/xml" saps:schema="/schemas/payment.xsd" title="Payment" />
  • 22. strong emphasis on simplicity discovery and composition
  • 23. Thank You © 2011, Markus Lanthaler. Some Rights Reserved. http://creativecommons.org/licenses/by-nc-sa/3.0/
  • 25. Image Credits (1) http://www.flickr.com/photos/furryscalyman/3695730985/ (3) Adapted from “Two Billion is Cool,” M. Thomson. Available: http://corp.klout.com/blog/2011/07/two-billion-is-cool/ (6) http://www.flickr.com/photos/nesster/3168425434/