Your SlideShare is downloading. ×
Creating APIs over RDF
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Creating APIs over RDF


Published on

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Leigh Dodds @ldodds Creating APIs over RDF Data Sources 8 th June 2011. SemTech 2011
  • 2. The Trouble with SPARQL
  • 3. Try our SPARQL Endpoint! Run Query
  • 4.{}&debug=on&timeout=&format=text%2Fhtml&save=display&fname= Trial and error experiments aren't easy
  • 5. APIs have Affordance They're like pulling a thread The URLs unravel into useful data
  • 6.{lat},{lon}.json Trial and error experiments are easy
  • 7. SPARQL is for Power Users
  • 8. How can we give RDF datasets more affordance?
  • 9. Linked Data? Typically not expressive enough to support all useful interactions Expensive to materialize all useful data partitions E.g. by date-time, location, top ranking, etc
  • 10. Build Custom APIs? Write custom code against your graph store Can be expensive to build & maintain Undermines power of web of data
  • 11. OData? Standard data API from Microsoft Very similar to RDF & Linked Data approach Can be implemented over SPARQL endpoint
  • 12. SPARQL Stored Procedures & The Linked Data API
  • 13. SPARQL “Stored Procedures”
  • 14. Bind SPARQL query to a URL{x}
  • 15. More than just a URL shortener 1. Identify query bound to URL 2. Inject parameters from URL & config 3. Apply paging/sorting options 4. Execute query 5. Optionally, apply post-processing transformations
  • 16. Parameter Passing Optional and Required Parameters Mapping to a particular type of RDF Term, e.g. literal, URI May have a default value May have a default prefix, e.g. base URL
  • 17. Post-Processing Named transformations that generate a specific mime-type Supports generating custom output formats Currently just XSLT. Could support JS
  • 18. Stored Procedure Benefits Declarative approach Offers simpler interface to developers Retains RDF output, but supports custom formats
  • 19. The Linked Data API
  • 20. Linked Data API Jeni Tennison (TSO), Dave Reynolds (Epimorphics), Leigh Dodds
  • 21. Linked Data API Map parameterised URLs to graph queries to extract data views
  • 22. Linked Data API Optimize for common query patterns Prioritize simple RESTful interactions not complex queries Provide pathway to exploring RDF and SPARQL
  • 23. Processing Model
      SPARQL Endpoint
      SELECT ?item WHERE { … }
      DESCRIBE <x> <y>
    API Config
  • 24. Selecting Resources URL mapped to query patterns by API configuration Query variables injected from URL path or query string Simple path expressions for traversing graph Support for sorting and paging
  • 25. Viewing Resources Default “view” is Concise Bounded Description Can specify arbitrary collections of properties in config or URL
  • 26. Output Formats Simple JSON and XML formats Standard RDF serializations Custom formats, including HTML, via XSLT
  • 27. @prefix spec: <> . @prefix api: <> . @prefix rdf: <> . @prefix rdfs: <> . @prefix recipe: <> . spec:api a api:API ; api:defaultPageSize &quot;10&quot; ; api:endpoint spec:foods . spec:foods a api:ListEndpoint ; api:uriTemplate &quot;/foods&quot; ; api:selector [ api:filter &quot;type=Food&quot; ]; api:defaultViewer api:describeViewer . rdf:type api:label &quot;type&quot; . recipe:Food api:label &quot;Food&quot; .
  • 28. { &quot;format&quot;: &quot;linked-data-api&quot;, &quot;version&quot;: &quot;0.2&quot; &quot;result&quot;: { &quot;items&quot;: [ { &quot;label&quot;: &quot;Balsamic Vinegar&quot;, &quot;isPrimaryTopicOf&quot;: &quot; &quot;type&quot;: &quot;;, &quot;_about&quot;: &quot;;, &quot;description&quot;: &quot;Balsamic Vinegar is...&quot; }, ... ], &quot;modified&quot;: &quot;Monday, 06-Jun-11 19:15:43 UTC&quot;, &quot;itemsPerPage&quot;: 10, &quot;startIndex&quot;: 0, &quot;type&quot;: &quot;;, &quot;first&quot;: &quot;/api/foodista-linked-data-api/foods.json?_page=1&quot;, &quot;_about&quot;: &quot;/api/foodista-linked-data-api/foods.json?_page=1&quot;, &quot;next&quot;: &quot;/api/foodista-linked-data-api/foods.json?_page=2&quot;, ... }
  • 29. Open Source Implementations Puelia (PHP) Elda (Java)
  • 30. Linked Data API Summary Declarative configuration-driven approach More sophisticated than SSPs Integrates well with Linked Data publishing Slightly higher learning curve
  • 31. Summary
  • 32. Adopt hybrid approach to encourage adoption Combine Linked Data with SPARQL powered APIs Recognise need for bridging, adapting between tools/systems/communities
  • 33. Support a “view source” approach Enable Crowd-Sourcing of APIs by sharing configuration & queries
  • 34. Try It For Yourself! Linked Data, RDF and API hosting Demo: 9.30 tomorrow
  • 35.