• Save
A Semantic Description Language for RESTful Data Services to Combat Semaphobia
Upcoming SlideShare
Loading in...5
×
 

A Semantic Description Language for RESTful Data Services to Combat Semaphobia

on

  • 3,099 views

Presentation of SEREDASj at the IEEE International Conference on Digital Ecosystems and Technologies (DEST 2011) in Daejeon, Korea

Presentation of SEREDASj at the IEEE International Conference on Digital Ecosystems and Technologies (DEST 2011) in Daejeon, Korea

Statistics

Views

Total Views
3,099
Views on SlideShare
3,097
Embed Views
2

Actions

Likes
4
Downloads
0
Comments
0

2 Embeds 2

https://www.linkedin.com 1
https://twitter.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

A Semantic Description Language for RESTful Data Services to Combat Semaphobia A Semantic Description Language for RESTful Data Services to Combat Semaphobia Presentation Transcript

  • A Semantic Description Language forRESTful Data Services to Combat Semaphobia Markus Lanthaler Graz University of Technology
  • Web services are increasingly popular
  • Why do we Why do weneed a website? need an API? 1995 2000 2005 2010 Of course we Of course we have a website have an API Adapted from T. Vitvar’s and J. Musser’s ECOWS 2010 Keynote, “ProgrammableWeb.com: Statistics, Trends, and Best Practices” View slide
  • Lightweight semantic annotations start to gain acceptance View slide
  • Increasing interest in the relationship of RESTful services and Linked Data
  • Semaphobia!?
  • RESTful APIs: documentationtypically not machine-readable
  • Need a machine-readable service description© Clever Cupcakes
  • © Nesster All previous efforts assume RPC-style. REST is different.
  • simplicity son
  • Metadata Element description Model Prefixes Links Type ref. Semantics Properties Items Media type &Prefix Name URI Target SEREDASj desc. Predicate Object(s) Name Request Semantics SEREDASj d. Variables Semantics ModelPredicate Object(s) Name Binding Predicate Object(s) ref.
  • Hmm…{ "zd": 556410, "dflkjlleij": "Markus", "xoiuweoid": "Lanthaler", last name "coiyqi": "male", "apnxp": [ gender { "zd": 586807, "euyx": "Christian Gütl" }, { "zd": 790980, "euyx": "John Doe" } ]}
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}{ "meta": { "prefixes": { "foaf": "http://xmlns.com/foaf/0.1/", "ex": "http://example.com/onto#", "owl": "http://www.w3.org/2002/07/owl#", "iana": "http://www.iana.org/link-relations/" }, },
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, "first_name": { "type": "string", "model": "[foaf:firstName]" }, "last_name": { "type": "string", "model": "[foaf:surname]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, "first_name": { "type": "string", "model": "[foaf:firstName]" }, "last_name": { "type": "string", "model": "[foaf:surname]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, "first_name": { "type": "string", "model": "[foaf:firstName]" }, "last_name": { "type": "string", "model": "[foaf:surname]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, "first_name": { "type": "string", "model": "[foaf:firstName]" }, "last_name": { "type": "string", "model": "[foaf:surname]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "knows": { "type": "array", "model": "[foaf:knows]", "items": { "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "knows": { "type": "array", "model": "[foaf:knows]", "items": { "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "knows": { "type": "array", "model": "[foaf:knows]", "items": { "type": "object", "model": "[foaf:Person]", "properties": { "id": { "type": "number", "model": "[ex:id]" }, ...
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "links": { "/user/{id}": { "mediaType": "application/json", "seredasjDescription": "#", "variables": { "id": { "binding": "#properties/knows/id" } }, "requestDescription": "#" },
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "/user/search{?query}": { "mediaType": "application/json", "seredasjDescription": "personlist.json", "semantics": { "[iana:relation]": "[iana:search]" }, "variables": { "query": { "model": "[foaf:name]" } } } }
  • { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}
  • A person. (object)id numberfirst_name string The first name of a person.last_name string The surname of some person.gender string The gender of this Agent (typically but not necessarily male or female).knows array A person known by this person (indicating some level of reciprocated interaction between the parties). A person. (object) id number name string A name for some thing.
  • strong emphasis on simplicity many use cases son discovery and composition
  • Thank You© 2011, Markus Lanthaler. Some Rights Reserved.http://creativecommons.org/licenses/by-nc-sa/3.0/
  • Questions?Markus LanthalerMarkus.Lanthaler@student.TUGraz.at
  • Image Credits(3) Adapted from T. Vitvar’s and J. Musser’s ECOWS 2010 Keynote, “ProgrammableWeb.com: Statistics, Trends, and Best Practices” (7) http://en.wikipedia.org/wiki/The_Scream (9) http://www.flickr.com/photos/clevercupcakes/4397152402/(10) http://www.flickr.com/photos/nesster/3168425434/
  • Bonus Slides
  • @base <http://example.com/user/556410> .<#> rdf:type foaf:Person .<#> ex:id 556410 .<#> foaf:firstName "Markus" .<#> foaf:surname "Lanthaler" .<#> foaf:gender "male" .<#> foaf:knows <#knows/0> .<#knows/0> rdf:type foaf:Person .<#knows/0> ex:id 586807 .<#knows/0> foaf:name "Christian Gütl" .<#> foaf:knows <#knows/1> .<#knows/1> rdf:type foaf:Person .<#knows/1> ex:id 790980 .<#knows/1> foaf:name "John Doe" .<http://example.com/user/586807> owl:sameAs <#knows/0> .<http://example.com/user/790980> owl:sameAs <#knows/1> .
  • OWL-S What does Profile the service described by How theService Process Model service works How to access Grounding the service
  • WSMO Objectives a client might Goals have when consulting the service Service Ontologies DescriptionDefines the formalized Description of servicesdomain knowledge Mediators Connectors between these components handles heterogeneities allows loose coupling
  • SAWSDL modelReference liftingSchemaMapping loweringSchemaMappingWSDL/XSD
  • MicroWSMO Model Lifting LoweringHTML + microformats (relies on hRESTS)
  • SA-REST Operation Action Input/Output/Fault LiftingHTML + RDFa Lowering
  • WSMO-Lite Functional Functionality the Semantics service offers Information Behavioral Model SemanticsData model for input, How has a client to output and fault talk to the service messages Non-functional Descriptions Non-functional properties, e.g. QoS or pricing