Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

A Semantic Description Language for RESTful Data Services to Combat Semaphobia

4,412 views

Published on

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

Published in: Technology, Education, Business

A Semantic Description Language for RESTful Data Services to Combat Semaphobia

  1. 1. A Semantic Description Language forRESTful Data Services to Combat Semaphobia Markus Lanthaler Graz University of Technology
  2. 2. Web services are increasingly popular
  3. 3. 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”
  4. 4. Lightweight semantic annotations start to gain acceptance
  5. 5. Increasing interest in the relationship of RESTful services and Linked Data
  6. 6. Semaphobia!?
  7. 7. RESTful APIs: documentationtypically not machine-readable
  8. 8. Need a machine-readable service description© Clever Cupcakes
  9. 9. © Nesster All previous efforts assume RPC-style. REST is different.
  10. 10. simplicity son
  11. 11. 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.
  12. 12. Hmm…{ "zd": 556410, "dflkjlleij": "Markus", "xoiuweoid": "Lanthaler", last name "coiyqi": "male", "apnxp": [ gender { "zd": 586807, "euyx": "Christian Gütl" }, { "zd": 790980, "euyx": "John Doe" } ]}
  13. 13. { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}
  14. 14. { "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/" }, },
  15. 15. { "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]" }, ...
  16. 16. { "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]" }, ...
  17. 17. { "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]" }, ...
  18. 18. { "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]" }, ...
  19. 19. { "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]" }, ...
  20. 20. { "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]" }, ...
  21. 21. { "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]" }, ...
  22. 22. { "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": "#" },
  23. 23. { "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]" } } } }
  24. 24. { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}
  25. 25. 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.
  26. 26. strong emphasis on simplicity many use cases son discovery and composition
  27. 27. Thank You© 2011, Markus Lanthaler. Some Rights Reserved.http://creativecommons.org/licenses/by-nc-sa/3.0/
  28. 28. Questions?Markus LanthalerMarkus.Lanthaler@student.TUGraz.at
  29. 29. 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/
  30. 30. Bonus Slides
  31. 31. @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> .
  32. 32. OWL-S What does Profile the service described by How theService Process Model service works How to access Grounding the service
  33. 33. 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
  34. 34. SAWSDL modelReference liftingSchemaMapping loweringSchemaMappingWSDL/XSD
  35. 35. MicroWSMO Model Lifting LoweringHTML + microformats (relies on hRESTS)
  36. 36. SA-REST Operation Action Input/Output/Fault LiftingHTML + RDFa Lowering
  37. 37. 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

×