OData2SPARQL is an OData proxy protocol convertor for any SPARQL/RDF triplestore. To compare SPARQL with OData is somewhat misleading. After all SPARQL has its roots as a very powerful query language for RDF data, but is not intended as a RESTful protocol. Similarly OData has its roots as an abstract interface to any type of datastore, not as a specification of that datastore. Some have said “OData is the equivalent of ODBC for the Web”.
Figure 1: OData2SPARQL Proxy between Semantic data and Application consumers
What is OData?
OData is a standardized protocol for creating and consuming data APIs. OData builds on core protocols like HTTP and commonly accepted methodologies like REST. The result is a uniform way to expose full-featured data APIs (Odata.org). Version 4.0 has been standardized at OASIS, and was released in March 2014.
OData RESTful APIs are easy to consume. The OData metadata, a machine-readable description of the data model of the APIs, enables the creation of powerful generic client proxies and tools. Some have said “OData is the equivalent of ODBC for the Web” (OASIS Approves OData 4.0 Standards for an Open, Programmable Web, 2014). Thus a comprehensive ecosystem of applications, and development tools, has emerged a few of which are listed below:
- LINQpad: LINQPad is a tool for building OData queries interactively.
- OpenUI5is an open source JavaScript UI library, maintained by SAP and available under the Apache 2.0 license. OpenUI5 lets you build enterprise-ready web applications, responsive to all devices, running on almost any browser of your choice. It’s based on JavaScript, using JQuery as its foundation, and follows web standards. It eases your development with a client-side HTML5 rendering library including a rich set of controls, and supports data binding to different models including OData.
- Power Query for Excel is a free Excel add-in that enhances the self-service Business Intelligence experience in Excel by simplifying data discovery, access and collaboration.
- Tableau – an excellent client-side analytics tool – can now consume OData feeds
- Teiid allows you to connect to and consume sources (odata services, relational data, web services, file, etc.) and deploy a single source that is available as an OData service out-of-the-box.
- Telerik not only provides native support for the OData protocol in its products, but also offers several applications and services which expose their data using the OData protocol.
- TIBCO Spotfire is a visual data discovery tool which can connect to OData feeds.
- Sharepoint: Any data you’ve got on SharePoint as of version 2010 can be manipulated via the OData protocol, which makes the SharePoint developer API considerably simpler.
- XOData is a generic web-based OData Service visualization & exploration tool that will assist in rapid design, prototype, verification, testing and documentation of OData Services.
- …
OData vs SPARQL/RDF
To compare SPARQL with OData is somewhat misleading. After all SPARQL has its roots as a very powerful query language for RDF data, and is not intended as a RESTful protocol. Similarly OData has its roots as an abstract interface to any type of datastore, not as a specification of that datastore. Recently JSON-LD has emerged (Manu Sporny, 2014), providing a method of transporting Linked Data using JSON. However JSON-LD focusses on the serialization of linked data (RDF) as JSON rather than defining the protocol for a RESTful CRUD interface. Thus it is largely an alternative to, say, Turtle or RDF/XML serialization format.
OData and SPARQL/RDF: Contradictory or Complimentary? | ||
OData | SPARQL/RDF | |
Strengths | · Schema discovery
· OData provides a data source neutral web service interface which means application components can be developed independently of the back end datasource. · Supports CRUD · Not limited to any particular physical data storage · Client tooling support · Easy to use from JavaScript · Growing set of OData productivity tools such as Excel, SharePoint, Tableau and BusinessObjects. · Growing set of OData frameworks such as SAPUI5, OpenUI5, and KendoUI · Growing set of independent development tools such as LINQPad, and XOdata · Based on open (OASIS) standards after being initiated by Microsoft · Strong commercial support from Microsoft, IBM, and SAP. · OData is not limited to traditional RDBMS applications. Vendors of real-time data such as OSI are publishing their data as an OData endpoint.
|
· Extremely flexible schema that can change over time.
· Vendor independent. · Portability of data between triple stores. · Federation over multiple, disparate, data-sources is inherent in the intent of RDF/SPARQL. · Increasingly standard format for publishing open data. · Linked Open Data expanding. · Identities globally defined. · Inferencing allows deduction of additional facts not originally asserted which can be queried via SPARQL. · Based on open (W3C) standards |
Weaknesses | · Was perceived as vendor (Microsoft) protocol
· Built around the use of a static data-model (RDBMS, JPA, etc) · No concept of federation of data-sources · Identities defined with respect to the server. · Inferencing limited to sub-classes of objects
|
· Application development frameworks that are aligned with RDF/SPARQL limited.
· Difficult to access from de-facto standard BI tools such as Excel. · Difficult to report using popular reporting tools
|
Table 1: ODATA AND SPARQL/RDF: CONTRADICTORY OR COMPLIMENTARY?
OData2SPARQL: OData complementing RDF/SPARQL
The data management strengths of SPARQL/RDF can be combined with the application development strengths of OData with a protocol proxy: OData4SPARQL. OData4SPARQL is the Janus-point between the application development world and the semantic information world.
- Brings together the strength of a ubiquitous RESTful interface standard (OData) with the flexibility, federation ability of RDF/SPARQL.
- SPARQL/OData Interop proposed W3C interoperation proxy between OData and SPARQL (Kal Ahmed, 2013)
- Opens up many popular user-interface development frameworks and tools such as OpneUI5.
- Acts as a Janus-point between application development and data-sources.
- User interface developers are not, and do not want to be, database developers. Therefore they want to use a standardized interface that abstracts away the database, even to the extent of what type of database: RDBMS, NoSQL, or RDF/SPARQL
- By providing an OData4SPARQL server, it opens up any SPARQL data-source to the C#/LINQ development world.
- Opens up many productivity tools such as Excel/PowerQuery, and SharePoint to be consumers of SPARQL data such as Dbpedia, Chembl, Chebi, BioPax and any of the Linked Open Data endpoints!
- Microsoft has been joined by IBM and SAP using OData as their primary interface method which means there will many application developers familiar with OData as the means to communicate with a backend data source.
Consuming RDF via OData: OData2SPARQL
All of the following tools are demonstrated accessing an RDF triple store via the OData2SPARQL porotocol proxy.
Development Tools
XOData
A new online OData development is XOData from (PragmatiQa, n.d.). Unlike other OData tools, XOData renders very useful relationship diagrams. The Northwind RDFD model published via OData4SPARQL endpoint is shown below:
Figure 2: Browsing the EDM model Published by ODaTa2SPARQL using XOData |
XOData also allows the construct of queries as shown below:
Figure 3: Querying The OData2SPARQL Endpoints Using XODATA |
LINQPad
(LINQPad, n.d.) is a free development tool for interactively querying databases using C#/LINQ. Thus it supports Object, SQL, EntityFramework, WCF Data Services, and, most importantly for OData4SPARQWL, OData services. Since LINQPad is centered on the Microsoft frameworks, WCF, WPF etc, this illustrates how the use of OData can bridge between the Java worlds of many semantic tools, and the Microsoft worlds of corporate applications such as SharePoint and Excel.
LINQPad shows the contents of the EDM model as a tree. One can then select an entity within that tree, and then create a LINQ or Lambda query. The results of executing that query are then presented below in a grid.
Figure 4: Browsing and Querying the OData2SPARQL Endpoints Using LINQPad
LINQPad and XOData are good for testing out queries against any datasource. Therefore this also demonstrates using the DBpedia SPARQL endpoint as shown below:
Figure 5: Browsing DBPedia SPARQLEndpoint Using LINQPad via OData2SPARQL
Browsing Data
One of the primary motivations for the creation of OData2SPARQL is to allow access to Linked Open Data and other SPARQLEndpoints from the ubiquitous enterprise and desktop tools such as SharePoint and Excel.
Excel/PowerQuery
“Power Query is a free add-in for Excel 2010 and up that provide users an easy way to discover, combine and refine data all within the familiar Excel interface.” (Introduction to Microsoft Power Query for Excel, 2014)
PowerQuery allows a user to build their personal data-mart from external data, such as that published by OData2SPARQL. The user can fetch data from the datasource, add filters to that data, navigate through that data to other entities, and so on with PowerQuery recording the steps taken along the way. Once the data-mart is created it can be used within Excel as a PivotTable or a simple list within a sheet. PowerQuery caches this data, but since the steps to create the data have been recorded, it can be refreshed automatically by allowing PowerQuery to follow the same processing steps. This feature resolves the issue of concurrency in which the data-sources are continuously being updated with new data yet one cannot afford to always query the source of the data. These features are illustrated below using the Northwind.rdf endpoint published via OData2SPARQL:
Figure 6: Browsing the OData4SPARQL Endpoint model with PowerQuery
Choosing an entity set allows one to start filtering and navigating through the data, as shown in the ‘Applied Steps’ frame on the right.
Note that the selected source is showing all values as ‘List’ since each value can have zero, one, or more values as is allowed for RDF DatatypeProperties.
Figure 7: Setting Up Initial Source of Data in PowerQuery |
As we expand the data, such as the companyProperty, we see that the Applied Steps records the steps take so that they can be repeated.
Figure 8: Expanding Details in PowerQuery
The above example expanded a DatatypeProperty collection. Alternatively we may navigate through a navigation property such as Customer_orders, the orders that are related to the selected customer:
Figure 9: Navigating through related data with PowerQuery
Once complete the data is imported into Excel:
Figure 10: Importing data from OData2SPARQL with PowerQuery |
Unlike conventional importing of data into Excel, the personal data-mart that was created in the process of selecting the data is still available.
Application Development Frameworks
There are a great number of superb application development frameworks that allow one to create cross platform (desktop, web, iOS, and Android), rich (large selection of components such as grids, charts, forms etc) applications. Most of these are based on the MVC or MVVM model both of which require a systematic and complete (CRUD) access to the back-end data via a RESTful API. Now that OData has been adopted by OASIS, the number of companies offering explicit support for OData is increasing, ranging from Microsoft, IBM, and SAP to real-time database vendors such as OSI. Similarly there are a number of frameworks, one of which is SAPUI5 (UI Development Toolkit for HTML5 Developer Center , n.d.) which has an open source version OpenUI5 (OpenUI5, n.d.).
SAPUI5
SAPUI5 is an impressive framework which makes MVVC/MVVM application development easy via the Eclipse-based IDE. Given that OData4SPARQL publishes any SPARQLEndpoint as an OData endpoint, it means that this development environment is immediately available for an semantic application development. The following illustrates a master-detail example against the Northwind.rdf SPARQL endpoint via OData4SPARQL.
Figure 11: SAPUI5 Application using OData4SPARQL endpoint
Yes we could have cheated and used the Northwind OData endpoint directly, but the Qnames of the Customer ID and Order Number reveals that the origin of the data is really RDF.
Handling Contradictions between OData and RDF/SPARQL
RDF is an extremely powerful way of expressing data, so a natural question to ask is what could be lost when that data is published via an OData service. The answer is very little! The following table lists the potential issues and their mitigation:
Issue | Description | Mitigation |
OData 3NF versus RDF 1NF | RDF inherently supports multiple values for a property, whereas OData up to V2 only supported scalar values | Odata V3+ supports collections of property values, which are supported by OData4SPARQL proxy server |
RDF Language tagging | RDF supports language tagging of strings | OData supports complex types, which are used to map a language tagged string to a complex type with separate language tag, and string value. |
DatatypeProperties versus object-attributes | OWL DatatypeProperties are concepts independent of the class, bound to a class by a domain, range or OWL restriction. Conversely OData treats such properties bound to the class. | In OData4SPARQL The OWL DatatypeProperty is converted to an OData EntityType property for each of the DatatypeProperty domains. |
Multiple inheritance | Odata only supports single inheritance via the OData baseType declaration within an EntityType definition. | |
Multiple domain properties | An OWL ObjectProperty will be mapped to an OData Association. An Association can be between only one FromRole and one ToRole and the Association must be unique within the namespace. | OData Associations are created for each domain. The OData4SPARQL names these associations {Domain}_{ObjectProperty}, ensuring uniqueness. |
Cardinality | The capabilities of OData V3 allow all DatatypeProperties to be OData collections. However the ontology might have further restrictions on the cardinality. | OData4SPARQL assumes cardinality will be managed by the backend triple store. However in future versions, if the cardinality is restricted to one or less, then the EntityType property can be declared as a scalar rather than a collection. |
Table 2: Contradictions between OData and RDF/SPARQL
Availability of OData2SPARQL
Two versions of OData2SPARQL are freely available as listed below:
- inova8.odata2sparql.v2 : OData V2 based on the Olingo.V2 library supporting OData Version 2
- inova8.odata2sparql.v4 : OData V4 based on the Olingo.V4 library supporting OData V4 (in progress)