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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
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.