A presentation about our project to provide an OData gateway over a SPARQL query service to enable OData clients to consume linked data from a SPARQL query endpoint.
3. OData
“OData is a standardized protocol
for creating and consuming
data APIs”
odata.org
4. Entity-Centric
• Collection of Entity Sets
• Service metadata
– List of entity sets
– Schema for entities
• Primary Keys
• Properties & Associations
• Results are returned as entities by default
6. RESTful Update
• POST to entity set‟s URL
• PUT, PATCH, MERGE or DELETE to the
edit URL of an existing entity
• Associations can also be exposed as a
collection of link resources.
7. Other Features
• Media entities
– Combine metadata properties with a special
media source URL.
• Named Streams
– Entity properties of type Edm.Stream
– Represented in the entity as a URL
• Custom Actions and Functions
– Entity set or entity-specific operations
exposed as URLs
8. Reasons to Like OData
• Schema discovery
• Client tooling support (esp for .NET)
• Easy to experiment
• Easy to use from JavaScript
• Growing set of OData consumers
– Data browsers
– GUI controls
– Applications
9. Criticisms of OData
• Services tend to be siloes
• No shared ontologies
• Perceived as a vendor-specific protocol
11. Motivation
• We like the features of OData
• We like the flexibility of RDF / SPARQL
• Goals:
– Read access to open SPARQL endpoints via
OData
– Declarative configuration
– Automatic configuration via RDF schema /
SPARQL introspection
12. Previous Attempt
• LINQ – to – SPARQL
– Hand-crafted model as annotated C#
interfaces
– Generated implementation classes
– OData -> LINQ -> SPARQL and all the way
back
– Worked, but it was clunky
13. Implementation
• Proxy service for a SPARQL endpoint
– OData service description derived from the
schema of the SPARQL endpoint
– OData request converted to a SPARQL query
– SPARQL response converted to OData response
– Stateless
– Configured by an annotated OData schema
document
http://github.com/brightstardb/odata-sparql
14. Annotating OData Services
• Annotations are part of the OData spec.
• We define annotations for:
– URI namespace for entity primary keys
– URIs for entity types, properties and associations
– Direction of associations
• Annotations are made to the published
schema
• Allows consumer to reconstruct the source
triples
15. Implementation Issues
• DESCRIBE is not an option
• CONSTRUCTed graphs
– Sorting
– Identifying the entity resources
• Server-controlled paging for OData
• Paging requires sub-queries
• Entities require a common identifier prefix
16. Select a Single Film
OData
/Films(„Un_Chien_Andalou‟)
SPARQL
CONSTRUCT {
res:Un_Chien_Andalou ?p ?o .
} WHERE {
res:Un_Chien_Andalou ?p ?o .
}
19. Questions
• In discussing Open Data what is the
perceived importance of standards
interoperability ?
• If it is important, where does the
responsibility for interoperability lie ?
20. More Questions
• What could W3C Linked Data Platform
learn from OData and vice-versa ?
• Should these efforts be sharing use-cases ?
21. Final Question
• Is there a meta-model for an entity-
oriented view of data resources ?
One that both OData and LDP could share.
Editor's Notes
Oxford-based software technology company developing products focussed on helping organisations to better manage the complex relationships between conceptual models such as business processes and domain knowledge and documents, data and other information that people use on a day-to-day basis.Developed out of working on the ISO standard for structured information exchange – Topic Maps.