Your SlideShare is downloading. ×
Facet: Building Web Pages with SPARQL
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

Facet: Building Web Pages with SPARQL


Published on

Introduces the high-level design of an web templating API for providing read-only access to RDF data using SPARQL.

Introduces the high-level design of an web templating API for providing read-only access to RDF data using SPARQL.

Published in: Technology, Education

  • 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
  • Transcript

    • 1. Facet Building Web Pages With SPARQL SWIG-UK Event, HP Labs November 23 rd 2007 Leigh Dodds Chief Technology Officer, Ingenta
    • 2. Problem Statement
    • 3. Where’s my RDF-native Web Framework?! There is no good system for integrating RDF repositories with existing an web framework (in Java)
    • 4. Design Constraints
    • 5.  
    • 6.  
    • 7.  
    • 8.  
    • 9.  
    • 10.  
    • 11.  
    • 12.  
    • 13. Design Constraints
      • A web page presents data that is a sub-graph (i.e. a view) over a larger RDF store, (the data model)
      • The extent of the sub-graph may vary for different presentations of the data, and may contain arbitrary properties
      • The description of the sub-graph (a lens) should be declarative
      • That sub-graph is “rooted” on a single primary resource (e.g. a Journal)
      • The identifier of the primary resource can be derived from the request URL, e.g. by rewriting the URI. And vice versa
        • Therefore, we don’t support blank nodes as primary resources
        • Or fragment identifiers in URIs!
      • The sub-graph should be serializable into an object graph for presentation to the templating system
    • 14. Facet Request Handling
      • To return a response we need to answer three questions…
      • What lens are we going to apply?
      • What data model are we going to apply it to?
      • What’s the identifier of the primary resource ?
    • 15. Lenses Describing views of RDF data
    • 16. A Simple Lens
      • PREFIX dc: <>
      • CONSTRUCT {
      • ?item dc:title ?title .
      • ?item dc:language ?language .
      • }
      • WHERE {
      • ?item dc:title ?title .
      • OPTIONAL { ?item dc:language ?language . }
      • }
    • 17. Configuring Lenses
      • <rdf:RDF
      • xmlns:rdf=&quot;;
      • xmlns:ja=&quot;;
      • xmlns:view=&quot;;>
      • <rdf:Description
      • rdf:about=&quot;;> <ja:assembler>com.ingenta.facet….</ja:assembler>
      • </rdf:Description>
      • <view:Sparql
      • rdf:about=&quot; &quot;>
      • <view:query> sparql/just-the-title.rq </view:query>
      • </view:Sparql>
      • </rdf:RDF>
    • 18. Data Model Configuring RDF graphs
    • 19. Data Model Configuration
      • Jena Assembler API
      • Add notion of application level default data model
        • Uses well-known URI
      • Lenses may be configured to apply to a specific data model
        • Allows “sharding” of data models
      • <view:Sparql
      • rdf:about=&quot; &quot;>
      • <view:appliesTo rdf:resource=“…”/>
      • </view:Sparql>
    • 20. Resource Identifiers
    • 21. Mapping Resource Identifiers
      • In a RESTful application, each resource should have a single primary location
      • Allows resource identifiers to be derived using URL rewriting
    • 22. Serialization Mapping an RDF sub-graph to a Java object model
    • 23. Serialization
      • Primary resource is a ContentItem
        • Has an identifier and Map of properties
      • Walk through graph, beginning at “root” resource, mapping RDF statements to Map entries
      • Mapping of property names is configurable.
        • Default based on namespace prefix, E.g. dc_title
      • Mapping of objects of each statement to a suitable Java object
        • ContentItem, Map, List, Integer , etc
    • 24. Serialization (special cases)
      • Multilingual properties
        • Special casing (i.e. a hack!) to modify naming, e.g. dc_title_fr
      • Repeated properties, e.g. dc:subject
        • Use schema annotation to indicate these, and then Serialize to a List
      • XML Literals & Multi-lingual data
        • E.g. multi-lingual abstracts ( dc:description ) that contain XHTML markup
        • Use schema annotation, parse and create separate Map entries
    • 25. Additional Features
      • “ MultiLens”, applying multiple queries in series to build results
      • Automatic availability of URL parameters as SPARQL query parameters
      • Integral API support
        • RDF output for free; JSON output trivial
      • Simple content lifecycle, mapping to HTTP resource statuses
        • E.g. Content Not Found, Moved, Gone
        • Add type ( life:Deleted ) and properties ( life:newLocation ) to data
      • Support for URL Aliasing based on property values
        • /content/issn/1234-5678 -> /content/journal/abcdef
        • <prism:issn>
    • 26. Summary
      • Pros
      • By embracing a few limitations on RDF modelling, e.g. identifiers provides a very flexible means of building web pages from an RDF repository
      • Reliance on SPARQL and Jena API features provides great deal of configuration options
      • Good integration with existing web templating environments
      • Quick to learn
      • Cons
      • Model limitations mean its not suited to all RDF “in the wild”