コンピューティングにおいて、オープンデータプロトコル(OData )は、クエリ可能で相互運用可能なWebサービスAPIを標準的な方法で作成および使用できるようにするオープンプロトコルです。Microsoftは2007年にODataを開始しました。[ 1 ]バージョン1.0、2.0、3.0は、Microsoft Open Specific Promiseに基づいてリリースされています。バージョン4.0はOASISで標準化され、[ 2 ] 2014年3月にリリースされました。[ 3 ] 2015年4月、OASISはOData v4とOData JSONフォーマットv4を国際標準として承認するためにISO/IEC JTC 1に提出しました。[ 4 ] 2016年12月、ISO/IECはOData 4.0 CoreをISO/IEC 20802-1:2016 [ 5 ] [ 6 ]として、OData JSONフォーマットをISO/IEC 20802-2:2016として発行しました。[ 7 ]
このプロトコルは、HTTPベースのWeb APIの作成と利用を可能にします。これにより、Webクライアントは、URLで識別され、データモデルで定義されたリソースを、シンプルなHTTPメッセージで公開および編集できます。ODataはJDBCやODBCといくつかの類似点があり、ODBCと同様に、ODataはリレーショナルデータベースに限定されません。
標準化
マイクロソフトによる初期開発の後、ODataはOASIS OData技術委員会(TC)の標準化されたプロトコルになりました
OASIS OData 技術委員会
OASIS OData TCは、企業、クラウド、モバイルデバイスでの再利用を目的として、異種アプリケーションや複数のステークホルダー間でのデータのクエリと共有を簡素化することに取り組んでいます。RESTベースのプロトコルであるODataは、HTTP、AtomPub、JSONを基盤とし、 URIを使用してデータフィードリソースのアドレス指定とアクセスを行います。リレーショナルデータベース、ファイルシステム、コンテンツ管理システム、従来のウェブサイトなど、様々なソースから情報にアクセスできるようになります。ODataは、データサイロを解消し、データの共有価値を高める手段を提供します。これは、データ利用者とデータ提供者が現在よりもはるかに強力な方法で相互運用できるエコシステムを構築することで実現され、より多くのアプリケーションがより広範なデータセットを理解できるようになります。このエコシステムに参加するすべてのデータ提供者と消費者は、その全体的な価値を高めます。[ 8 ]
TC 参加者には、 CA Technologies、Citrix Systems、IBM、Microsoft、Progress Software、Red Hat、SAP SE、SDLが含まれます。
アーキテクチャ
ODataは、Web APIの作成と利用のためのプロトコルです。ODataは、HTTP、AtomPub、JSONを基盤とし、URIを使用してデータフィードリソースのアドレス指定とアクセスを行います
リソースの識別
ODataはURIを使用してリソースを識別します。サービスルートがhttp://host/service/と略されるすべてのODataサービスには、以下の固定リソースがあります
サービスドキュメント
サービスドキュメントには、取得可能なエンティティセット、関数、およびシングルトンがリストされています。クライアントはサービスドキュメントを使用して、ハイパーメディア駆動型の方法でモデルをナビゲートできます
サービスドキュメントはhttp://host/service/で入手できます。
メタデータドキュメント
メタデータドキュメントは、ODataサービスが理解できる型、セット、関数、およびアクションを記述します。クライアントはメタデータドキュメントを使用して、サービス内のエンティティをクエリおよび操作する方法を理解できます
メタデータ ドキュメントはhttp://host/service/$metadataで入手できます。
動的リソース
動的リソースのURIは、サービス文書とメタデータ文書内の ハイパーメディア情報から計算される場合があります
リソース操作
ODataはHTTP動詞を使用して、リソースに対する操作を示します
- GET: リソース (エンティティのコレクション、単一のエンティティ、構造プロパティ、ナビゲーション プロパティ、ストリームなど) を取得します。
- POST: 新しいリソースを作成します。
- PUT: 既存のリソースを完全なインスタンスに置き換えて更新します。
- PATCH: 既存のリソースのプロパティの一部を部分インスタンスに置き換えて更新します。
- DELETE: リソースを削除します。
クエリ
ODataエンドポイントから要求されたURLには、クエリオプションが含まれる場合があります。ODataプロトコルは、エンドポイントが受け入れるべきさまざまな「システムクエリオプション」を指定しており、これらを使用してデータのフィルタリング、順序付け、マッピング、ページ区切りを行うことができます
クエリオプションは、URL の末尾に文字を追加して?、文字で区切ることができます&。各オプションは、先頭に$- 記号が付いた名前と、その値で構成され、=記号で区切られます(例:OData/Products?$top=2&$orderby=Name)。データのフィルタリングに使用するための論理演算子と関数がいくつか定義されています。例: は、OData/Products?$filter=Price lt 10.00 and startswith(Name,'M')価格が 10 未満で、名前が文字「M」で始まる製品をリクエストします。
リソース表現
OData は、データとデータモデルの表現に異なる形式を使用します。OData プロトコルバージョン 4.0 では、JSON 形式がデータ表現の標準であり、Atom形式はまだ委員会の仕様策定段階にあります。データモデルの表現には、OData サービスによって公開されるエンティティデータモデルの XML 表現を定義する共通スキーマ定義言語 (CSDL) が使用されます。
サンプルのOData JSONデータペイロード
製品のコレクション:
{ "@odata.context" : "http://services.odata.org/V4/OData/OData.svc/$metadata#Products" , "value" : [ { "ID" : 0 , "Name" : "Meat" , "Description" : "Red Meat" , "ReleaseDate" : "1992-01-01T00:00:00Z" , "DiscontinuedDate" : null , "Rating" : 14 , "Price" : 2.5 }, { "ID" : 1 , "Name" : "Milk" , "Description" : "Low fat milk" , "ReleaseDate" : "1995-10-01T00:00:00Z" , "DiscontinuedDate" : null , "Rating" : 3 , "価格" : 3.5 }, ... ] }OData Atomデータペイロードのサンプル
製品のコレクション:
<フィードxml:base= "http://services.odata.org/V4/OData/OData.svc/" m:context= "http://services.odata.org/V4/OData/OData.svc/$metadata#Products" xmlns= "http://www.w3.org/2005/Atom" xmlns:d= "http://docs.oasis-open.org/odata/ns/data" xmlns:m= "http://docs.oasis-open.org/odata/ns/metadata" xmlns:georss= "http://www.georss.org/georss" xmlns:gml= "http://www.opengis.net/gml" ><id> http://services.odata.org/v4/odata/odata.svc/Products </id><title type= "text" >製品</title><更新> 2015-05-19T03:38:50Z </更新><link rel= "self" title= "製品" href= "製品" /><エントリ><id> http://services.odata.org/V4/OData/OData.svc/Products(0) </id><カテゴリ用語 = "#ODataDemo.Product"スキーム = "http://docs.oasis-open.org/odata/ns/scheme" /><link rel= "edit" title= "商品" href= "商品(0)" /><link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type= "application/xml" title= "Categories" href= "Products(0)/Categories/$ref" /><link rel= "http://docs.oasis-open.org/odata/ns/related/Categories" type= "application/atom+xml;type=feed" title= "Categories" href= "Products(0)/Categories" /><link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type= "application/xml" title= "Supplier" href= "Products(0)/Supplier/$ref" /><link rel= "http://docs.oasis-open.org/odata/ns/related/Supplier" type= "application/atom+xml;type=entry" title= "Supplier" href= "Products(0)/Supplier" /><link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type= "application/xml" title= "ProductDetail" href= "Products(0)/ProductDetail/$ref" /><link rel= "http://docs.oasis-open.org/odata/ns/related/ProductDetail" type= "application/atom+xml;type=entry" title= "ProductDetail" href= "Products(0)/ProductDetail" /><title/><更新> 2015-05-19T03:38:50Z </更新><author><name/></author><content type= "application/xml" ><m:properties><d:ID m:type= "Int32" > 0 </d:ID><d:Name>パン</d:Name><d:Description>全粒粉パン</d:Description ><d:ReleaseDate m:type= "DateTimeOffset" > 1992-01-01T00:00:00Z </d:ReleaseDate><d:DiscontinuedDate m:null= "true" /><d:Rating m:type= "Int16" > 4 </d:Rating><d:Price m:type= "Double" > 2.5 </d:Price></m:properties></content></entry><エントリ><id> http://services.odata.org/V4/OData/OData.svc/Products(1) </id><カテゴリ用語 = "#ODataDemo.Product"スキーム = "http://docs.oasis-open.org/odata/ns/scheme" /><link rel= "edit" title= "製品" href= "製品(1)" /><link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Categories" type= "application/xml" title= "Categories" href= "Products(1)/Categories/$ref" /><link rel= "http://docs.oasis-open.org/odata/ns/related/Categories" type= "application/atom+xml;type=feed" title= "Categories" href= "Products(1)/Categories" /><link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/Supplier" type= "application/xml" title= "Supplier" href= "Products(1)/Supplier/$ref" /><link rel= "http://docs.oasis-open.org/odata/ns/related/Supplier" type= "application/atom+xml;type=entry" title= "Supplier" href= "Products(1)/Supplier" /><link rel= "http://docs.oasis-open.org/odata/ns/relatedlinks/ProductDetail" type= "application/xml" title= "ProductDetail" href= "Products(1)/ProductDetail/$ref" /><link rel= "http://docs.oasis-open.org/odata/ns/related/ProductDetail" type= "application/atom+xml;type=entry" title= "ProductDetail" href= "Products(1)/ProductDetail" /><title/><更新> 2015-05-19T03:38:50Z </更新><author><name/></author><content type= "application/xml" ><m:properties><d:ID m:type= "Int32" > 1 </d:ID><d:Name>ミルク</d:Name><d:Description>低脂肪牛乳</d:Description><d:ReleaseDate m:type= "DateTimeOffset" > 1995-10-01T00:00:00Z </d:ReleaseDate><d:DiscontinuedDate m:null= "true" /><d:Rating m:type= "Int16" > 3 </d:Rating><d:Price m:type= "Double" > 3.5 </d:Price></m:properties></content></entry>… </feed>ODataメタデータドキュメントのサンプル
<edmx:Edmx Version= "4.0" xmlns:edmx= "http://docs.oasis-open.org/odata/ns/edmx" ><edmx:DataServices><スキーマ名前空間 = "ODataDemo" xmlns = "http://docs.oasis-open.org/odata/ns/edm" ><EntityType名 = "製品" ><キー><プロパティ参照名= "ID" /></Key><プロパティ名= "ID"型= "Edm.Int32" Nullable= "false" /><プロパティ名= "Name"タイプ= "Edm.String" /><プロパティ名= "説明"タイプ= "Edm.String" /><プロパティ名= "ReleaseDate"型= "Edm.DateTimeOffset" Nullable= "false" /><プロパティ名= "DiscontinuedDate"タイプ= "Edm.DateTimeOffset" /><プロパティ名= "Rating"型= "Edm.Int16" Nullable= "false" /><プロパティ名= "Price"型= "Edm.Double" Nullable= "false" /></EntityType><ComplexType Name = "住所" ><プロパティ名= "Street"タイプ= "Edm.String" /><プロパティ名= "City"タイプ= "Edm.String" /><プロパティ名= "State"タイプ= "Edm.String" /><プロパティ名= "ZipCode"タイプ= "Edm.String" /><プロパティ名= "国"タイプ= "Edm.String" /></ComplexType><EntityContainer Name = "DemoService" ><EntitySet名 = "製品" EntityType = "ODataDemo.Product" ></EntitySet></EntityContainer></Schema></edmx:DataServices></edmx:Edmx>アプリケーション
アプリケーションには以下が含まれます: [ 9 ]
- Progress DataDirectハイブリッドデータパイプライン[ 10 ]は、クラウド、ビッグデータ、リレーショナルデータソースをODataエンドポイントとして公開できます。
- Socrata はOData APIを公開します。
- Microsoft Azure はOData APIを公開します。
- Oracle Analytics CloudはOData APIに接続できます
- SAP NetWeaver Gateway [ 11 ]はSAP Business SuiteおよびSAP Business WarehouseへのODataアクセスを提供します。
- IBM WebSphere eXtreme Scale RESTデータサービスは、ODataを使用する任意のHTTPクライアントからアクセスできます。[ 12 ]
- Microsoft SharePoint 2010以降は、ODataエンドポイントとしてデータを公開できます。
- Office 365はOData V4.0 APIを公開しています。[ 13 ]
- Salesforce ConnectはOData APIを使用します。[ 14 ]
- Skyvia Connect [ 15 ]はOData経由でクラウドとデータベースデータを公開します
- TableauはOData APIに接続できます。[ 16 ]
- TIBCO SpotfireはOData APIに接続できます。[ 17 ]
- Mulesoft [ 18 ]はOData APIとの統合に役立ちます。[ 19 ]
- SuccessFactors [ 20 ]はOData APIを使用している
- Ceridian HCMのDayforce [ 21 ]はOdata [ 22 ]を使用している。
- RedfishはOdataを使用する[ 23 ]
ツール
- Nucleonデータベースマスター[ 24 ]
参照
- GData – Googleの競合プロトコル
- リソース記述フレームワーク(RDF) - W3Cによる同様の概念
- GraphQL - Facebook/Meta発の人気プロトコル
参考文献
- ^ Flasko, Mike (2007年7月18日). 「ようこそ!」 . MSDNブログ. ODataチーム. 2014年5月5日時点のオリジナルよりアーカイブ
- ^ 「OASIS Open Data Protocol (OData) Technical Committee」. 2013年8月5日閲覧。
- ^ 「OASIS、オープンでプログラム可能なWebのためのOData 4.0標準を承認」 oasis-open.org . 2014年3月17日。
- ^ 「OASISはOData v4およびOData JSONフォーマットv4を国際標準として承認するためにISO/IEC JTC 1に提出しました」 MS Open Tech . 2015年5月20日時点のオリジナルよりアーカイブ。 2015年5月18日閲覧。
- ^ 「ODataがISO標準として公開 · OData - RESTへの最良の方法」 www.odata.org . 2021年5月11日閲覧。
- ^ 「ISO/IEC 20802-1:2016」 . ISO . 2021年5月11日閲覧。
- ^ 「ISO/IEC 20802-2:2016」 . ISO . 2021年5月11日閲覧。
- ^ 「OASIS Open Data Protocol (OData) TC | OASIS」 . www.oasis-open.org . 2019年9月24日閲覧。
- ^ 「エコシステム」 . odata.org .
- ^ Progress DataDirect ハイブリッド データ パイプライン
- ^ 「SAP NetWeaver Gateway」 . 2012年11月22日閲覧。
- ^ IBM developerWorks eXtreme Scale REST データ サービス(OData)
- ^ 「Office 365 API へようこそ」 . docs.microsoft.com . 2018年8月28日. 2019年9月24日閲覧。
- ^ 「OData 2.0 または 4.0 アダプタを使用して外部データにアクセスするための Salesforce Connect の設定」。
- ^スカイビアコネクト
- ^ 「OData - Tableau」 . help.tableau.com . 2019年9月24日閲覧。
- ^ 「ODataとSpotfire」。TIBCOブログ。2016年3月30日閲覧。
- ^ Mulesoft
- ^ 「Anypoint Exchange」 www.mulesoft.com 2019年9月24日閲覧
- ^サクセスファクターズ
- ^セリディアンHCMのデイフォース
- ^ 「HRレポートソフトウェア - Dayforce | Ceridian」www.ceridian.com . 2019年9月24日閲覧。
- ^ 「Redfish APIについて知っておくべきこと」Exxact、2017年12月1日。 2019年8月31日閲覧。
- ^ 「Nucleon Database Master」 。 2017年11月16日閲覧。