AligningWeb Serviceswith theSemantic Webto Create aGlobal Read-WriteGraph of DataMarkus LanthalerGraz University of Techno...
Web services are increasingly popular
Twitter      Facebook     Google15 billion    5 billion   5 billion per day      per day     per day
Semantic Web is still in its infancy
Semaphobia!?
Lightweight semantic annotations     start to gain acceptance
Increasing interest in the relationship of   RESTful services and Linked Data
Increasing interest in the relationship of   RESTful services and Linked Data
© Nesster            Most previous efforts assume            RPC-style. REST is different.
simplicity         son
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
{    "id": 556410,    "first_name": "Markus",    "last_name": "Lanthaler",    "gender": "male",    "knows": [      { "id":...
Two Algorithms
1   select ← createSelect(query) 2   bindings ← tripleStore.execute(select) 3 4   for each binding in bindings do 5     de...
1   do 2     requests ← retrievePotentialRequests(triples) 3     progress ← false 4     while requests.hasNext() = true do...
Publication Management Service
/author/{id}                   /publication/{id}            foaf:Person                     foaf:Documentid           ex:p...
1   INSERT DATA { 2     _:public1 a foaf:Document ; 3               dc:title "My first paper" ; 4               dc:creator...
1   INSERT DATA { 2     _:public1 a foaf:Document ; 3     pub:p489 dc:title "My first paper" ; 4               dc:creator ...
1   INSERT DATA { 2     _:public1 a foaf:Document ; 3     pub:p489 dc:title "My first paper" ; 4               dc:creator ...
do it on-the-fly
Thank You© 2011, Markus Lanthaler. Some Rights Reserved.http://creativecommons.org/licenses/by-nc-sa/3.0/
Questions?Markus Lanthaler                     @MarkusLanthalerMarkus.Lanthaler@student.TUGraz.at   http://www.slideshare....
Image Credits(1) http://galleries.www.frut.lv/en/5432/959(3) Adapted from “Two Billion is Cool,” M. Thomson. Available:   ...
Upcoming SlideShare
Loading in...5
×

Aligning Web Services with the Semantic Web to Create a Global Read-Write Graph of Data

3,218

Published on

Presentation of the paper "Aligning Web Services with the Semantic Web to Create a Global Read-Write Graph of Data" gave at the 9th IEEE European Conference on Web Services (ECOWS 2011) in Lugano, Switzerland.

Despite significant research and development efforts, the vision of the Semantic Web yielding to a Web of Data has not yet become reality. Even though initiatives such as Linking Open Data gained traction recently, the Web of Data is still clearly outpaced by the growth of the traditional, document-based Web. Instead of releasing data in the form of RDF, many publishers choose to publish their data in the form of Web services. The reasons for this are manifold. Given that RESTful Web services closely resemble the document-based Web, they are not only perceived as less complex and disruptive, but also provide read-write interfaces to the underlying data. In contrast, the current Semantic Web is essentially read-only which clearly inhibits net-working effects and engagement of the crowd. On the other hand, the prevalent use of proprietary schemas to represent the data published by Web services inhibits generic browsers or crawlers to access and understand this data; the consequence are islands of data instead of a global graph of data forming the envisioned Semantic Web. We thus propose a novel approach to integrate Web services into the Web of Data by introducing an algorithm to translate SPARQL queries to HTTP requests. The aim is to create a global read-write graph of data and to standardize the mashup development process. We try to keep the approach as familiar and simple as possible to lower the entry barrier and foster the adoption of our approach. Thus, we based our proposal on SEREDASj, a semantic description language for RESTful data services, for making proprietary JSON service schemas accessible.

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,218
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Aligning Web Services with the Semantic Web to Create a Global Read-Write Graph of Data"

  1. 1. AligningWeb Serviceswith theSemantic Webto Create aGlobal Read-WriteGraph of DataMarkus LanthalerGraz University of Technology
  2. 2. Web services are increasingly popular
  3. 3. Twitter Facebook Google15 billion 5 billion 5 billion per day per day per day
  4. 4. Semantic Web is still in its infancy
  5. 5. Semaphobia!?
  6. 6. Lightweight semantic annotations start to gain acceptance
  7. 7. Increasing interest in the relationship of RESTful services and Linked Data
  8. 8. Increasing interest in the relationship of RESTful services and Linked Data
  9. 9. © Nesster Most previous efforts assume RPC-style. REST is different.
  10. 10. simplicity son
  11. 11. { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}
  12. 12. { "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]" }, ...
  13. 13. { "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]" }, ...
  14. 14. { "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]" }, ...
  15. 15. { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "/user/{id}": { "mediaType": "application/json", "seredasjDescription": "#", "variables": { "id": { "binding": "#properties/knows/id" } }, "requestDescription": "#" } }
  16. 16. { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]} "links": { "/user/search{?query}": { "mediaType": "application/json", "seredasjDescription": "personlist.json", "semantics": { "[iana:relation]": "[iana:search]" }, "variables": { "query": { "model": "[foaf:name]" } } },
  17. 17. { "id": 556410, "first_name": "Markus", "last_name": "Lanthaler", "gender": "male", "knows": [ { "id": 586807, "name": "Christian Gütl" }, { "id": 790980, "name": "John Doe" } ]}
  18. 18. Two Algorithms
  19. 19. 1 select ← createSelect(query) 2 bindings ← tripleStore.execute(select) 3 4 for each binding in bindings do 5 deleteData ← createDeleteData(query, binding) 6 operations.add(deleteData) 7 insertData ← insertDeleteData(query, binding) 8 operations.add(insertData) 9 end for1011 operations.sort()12 translateDataOperations(operations)
  20. 20. 1 do 2 requests ← retrievePotentialRequests(triples) 3 progress ← false 4 while requests.hasNext() = true do 5 request ← requests.next() 6 request.setData(triples) 7 request.setData(tripleStore) 8 if isValid(request) = true then 9 if request.submit() = success then10 resp ← request.parseResponse()11 triples.update(resp.getTriples())12 tripleStore.update(resp.getTriples())13 requests.remove(request)14 progress ← true15 end if16 end if17 end while18 while progress = true19 if triples.empty() = true then20 success()21 else22 error(triples)23 end if
  21. 21. Publication Management Service
  22. 22. /author/{id} /publication/{id} foaf:Person foaf:Documentid ex:persId id ex:pubIdname foaf:givenName X title dc:title Xlastname foaf:familyName X authors[] dc:creator Xaddress v:adr id ex:persId X city v:locality name foaf:name country v:country-name
  23. 23. 1 INSERT DATA { 2 _:public1 a foaf:Document ; 3 dc:title "My first paper" ; 4 dc:creator _:author1 ; 5 dc:creator auth:cg789 . 6 _:author1 a foaf:Person ; 7 foaf:givenName "Markus" ; 8 foaf:familyName "Lanthaler" ; 9 v:adr _:addr1 .10 _:addr1 v:country-name "Italy" .11 }POST /publication/ POST /author/ { "title": "My first paper", "authors": [ { "id": "cg789" } ] }201 CreatedLocation: /publication/p489/
  24. 24. 1 INSERT DATA { 2 _:public1 a foaf:Document ; 3 pub:p489 dc:title "My first paper" ; 4 dc:creator _:author1 ; 5 dc:creator auth:cg789 . 6 _:author1 a foaf:Person ; 7 auth:ml98 foaf:givenName "Markus" ; 8 foaf:familyName "Lanthaler" ; 9 v:adr _:addr1 .10 _:addr1 v:country-name "Italy" .11 }POST /publication/ POST /author/ { "title": "My first paper", { "name": "Markus", "authors": [ "lastname": "Lanthaler", { "id": "cg789" } "address": { ] "country": "Italy" } } }201 Created 201 CreatedLocation: /publication/p489/ Location: /author/ml98
  25. 25. 1 INSERT DATA { 2 _:public1 a foaf:Document ; 3 pub:p489 dc:title "My first paper" ; 4 dc:creator auth:ml98 ; 5 dc:creator auth:cg789 . 6 _:author1 a foaf:Person ; 7 auth:ml98 foaf:givenName "Markus" ; 8 foaf:familyName "Lanthaler" ; 9 v:adr _:addr1 .10 _:addr1 v:country-name "Italy" .11 }PUT /publication/p489 { "title": "My first paper", "authors": [ { "id": "cg789" }, { "id“: "ml98" } ] }200 OK
  26. 26. do it on-the-fly
  27. 27. Thank You© 2011, Markus Lanthaler. Some Rights Reserved.http://creativecommons.org/licenses/by-nc-sa/3.0/
  28. 28. Questions?Markus Lanthaler @MarkusLanthalerMarkus.Lanthaler@student.TUGraz.at http://www.slideshare.net/lanthaler
  29. 29. Image Credits(1) http://galleries.www.frut.lv/en/5432/959(3) Adapted from “Two Billion is Cool,” M. Thomson. Available: http://corp.klout.com/blog/2011/07/two-billion-is-cool/(5) http://en.wikipedia.org/wiki/The_Scream(9) http://www.flickr.com/photos/nesster/3168425434/

×