Open Data Protocol
Open Data Protocol (OData) - protokół sieciowy służący do pobierania oraz aktualizowania danych stworzony przez firmę Microsoft. Oparty jest na standardowych protokołach sieciowych takich jak HTTP i ATOM, dodając do nich możliwość wykonywania zapytań i zwracania podzbiorów danych w formacie XML lub JSON. Protokół oparty jest na licencji Microsoft Open Specification Promise.
Przestrzenie nazw XML
Przestrzenie nazw wkorzystywane podczas reprezentacji XML to:
- Data Namespace - http://schemas.microsoft.com/ado/2007/08/dataservices - przestrzeń wykorzystywana do reprezentacji danych
- Metadata Namespace - http://schemas.microsoft.com/ado/2007/08/dataservices/metadata - przestrzeń nazw wykorzystywana do reprezentacji metadanych
Pojęcia podstawowe
- Collection (kolekcja) - zasób przechowujące zbiór elementów Member Resource
- Entity Data Model (Model danych) - abstrakcyjny model danych wykorzystywany przez serwis OData
- Entry (wpis) - element kolekcji reprzentowany przez Atrom Entry Document (dla reprezentacji XML) lub obiekt JSON (dla reprezentacji JSON)
- Feed (źródło) - reprezentacji kolecji
- Link (relacja) - określa relację pomiędzy dwoma wpisami
- Property (właściwość) - element reprezentujący część wpisu
- Resource (zasób) - dostępny poprzez sieć obiekt danych
Konwencje URI
Adres URI serwisów OData składają się z trzecz zasadniczych części:
- Adres główny serwisu - np. http://services.odata.org/OData/OData.svc
- Ścieżka do zasobu - np. Categories(1)/Products
- Operatory zapytań - np. top=2&$orderby=Name
Złożenie powyższych trzech elementów da dostęp do kolekcji Produktów należących do jednej kategorii, posortowanej wg nazwy. Z tej kolekcji zostaną wybrane dwa ptodukty: http://services.odata.org/OData/OData.svc/Categories(1)/Products?$top=2&$orderby=Name
Opcje zapytania należy poprzedzić symbolem "?", a wszystkie operacje zapytań poprzedzone są symbolem "$".
Opcje zapytań to:
- $orderby (sortowanie) - sortowanie wg wybranej właściwości: $orderby=Name.
- rosnąco - domyślnie sortowanie odbywą się w sposób rosnący. Zapisy: $order=Name oraz $orderby=Name asc są sobie równoznaczne
- malejąco - wykonanie sortowania malejącego wykonuje się poprzez dodanie słowa kluczowego desc: $orderby=Name desc
- $top - operator zwracający podzbiór z kolekcji wyników w zależności od przekazanego parametru np. $top=2 zwróci dla wpisy
- $filter (filtrowanie) - operator umożliwiający filtorwanie wyników zględem zadanego kryterium np. $filter=Name eq 'Cranberry Juice' zwróci wpisy produktów, dla których właściwość Name zawiera wartość Cranberry Juice
- Protokół OData dostarcza operatry filtrowania w trzech grupach: Logiczne, Arytmetyczne, Grupujące.
- $format - operator informujący serwis w jakim formacie mają zostać zwrócone wyniki:
- ATOM - http://services.odata.org/OData/OData.svc/Categories(1)/Products?$top=2&$orderby=Name&$format=atom
- JSON - http://services.odata.org/OData/OData.svc/Categories(1)/Products?$top=2&$orderby=Name&$format=json
- $select (projekcja) - w celu ograniczenia liczby wyświetlanych właściwości dla encji możliwe jest zastosowanie operatora $select oraz przekazanie nazwe właściwości jako parametrów: http://services.odata.org/OData/OData.svc/Categories(1)/Products?$top=2&$orderby=Name&$select=Name,Price
Biblioteki klienckie
- JavaScript
- PHP
- Java
- Ruby
- Objective-C
- Microsoft .NET 3.5 SP1
- Microsoft .NET 4.0
- Joomla
- Drupal
Biblioteki serwerowe
- Microsoft .NET 3.5 SP1
- Microsoft .NET 4.0
- Java
- Ruby on Rails
- MySQL
Wybrane aplikacje udostępniające dane w postaci OData
- SharePoint 2010
- IBM WebSphere
- Microsoft SQL Azure
- Windows Azure Table Storage
- Microsoft Dynamics CRM 2011
- GeoRest
- SDL Tridion 2011
Wybrane serwisy OData
- Facebook Insights - http://facebook-insights.cloudapp.net/
- eBay - http://ebayodata.cloudapp.net/
- Netflix - http://odata.netflix.com/
- Twitpic - http://odata.twitpic.com/
- Open Government Data Initiative - http://ogdi.cloudapp.net/v1/
- The City of Edmonton Open Data Catalogue - http://datafeed.edmonton.ca/v1/coe/
- Windows Azure Marketplace DataMarket - https://datamarket.azure.com/
- Stack Overflow - http://data.stackexchange.com/
Zobacz też
- Strona główna protokołu OData (biblioteki kliencki i serwerowe) - http://www.odata.org
- Portal MSDN.pl (seria artykułów OData):
- Część 1 - http://msdn.microsoft.com/pl-pl/library/gg455971
- Część 2 - http://msdn.microsoft.com/pl-pl/library/odata-nowy-standard-udostepniania-i-korzystania-z-danych-cz-2a oraz http://msdn.microsoft.com/pl-pl/library/odata-nowy-standard-udostepniania-i-korzystania-z-danych-cz-2b
Bibliografia
- Protocol documentation - http://www.odata.org/developers/protocols