オープンデータプロトコル

コンピューティングにおいて、オープンデータプロトコルOData )は、クエリ可能で相互運用可能なWebサービスAPIを標準的な方法で作成および使用できるようにするオープンプロトコルです。Microsoft2007年に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はJDBCODBCといくつかの類似点があり、ODBCと同様に、ODataはリレーショナルデータベースに限定されません。

標準化

マイクロソフトによる初期開発の後、O​​DataはOASIS OData技術委員会(TC)の標準化されたプロトコルになりました

OASIS OData 技術委員会

OASIS OData TCは、企業、クラウド、モバイルデバイスでの再利用を目的として、異種アプリケーションや複数のステークホルダー間でのデータのクエリと共有を簡素化することに取り組んでいます。RESTベースのプロトコルであるODataは、HTTPAtomPubJSONを基盤とし、 URIを使用してデータフィードリソースのアドレス指定とアクセスを行います。リレーショナルデータベース、ファイルシステム、コンテンツ管理システム、従来のウェブサイトなど、様々なソースから情報にアクセスできるようになります。ODataは、データサイロを解消し、データの共有価値を高める手段を提供します。これは、データ利用者とデータ提供者が現在よりもはるかに強力な方法で相互運用できるエコシステムを構築することで実現され、より多くのアプリケーションがより広範なデータセットを理解できるようになります。このエコシステムに参加するすべてのデータ提供者と消費者は、その全体的な価値を高めます。[ 8 ]

TC 参加者には、 CA TechnologiesCitrix SystemsIBMMicrosoftProgress SoftwareRed HatSAP SESDLが含まれます。

アーキテクチャ

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 ]

ツール

  • Nucleonデータベースマスター[ 24 ]

参照

参考文献

  1. ^ Flasko, Mike (2007年7月18日). 「ようこそ!」 . MSDNブログ. ODataチーム. 2014年5月5日時点のオリジナルよりアーカイブ
  2. ^ 「OASIS Open Data Protocol (OData) Technical Committee」. 2013年8月5日閲覧。
  3. ^ 「OASIS、オープンでプログラム可能なWebのためのOData 4.0標準を承認」 oasis-open.org . 2014年3月17日。
  4. ^ 「OASISはOData v4およびOData JSONフォーマットv4を国際標準として承認するためにISO/IEC JTC 1に提出しました」 MS Open Tech . 2015年5月20日時点のオリジナルよりアーカイブ。 2015年5月18日閲覧
  5. ^ 「ODataがISO標準として公開 · OData - RESTへの最良の方法」 www.odata.org . 2021年5月11日閲覧
  6. ^ 「ISO/IEC 20802-1:2016」 . ISO . 2021年5月11日閲覧。
  7. ^ 「ISO/IEC 20802-2:2016」 . ISO . 2021年5月11日閲覧。
  8. ^ 「OASIS Open Data Protocol (OData) TC | OASIS」 . www.oasis-open.org . 2019年9月24日閲覧
  9. ^ 「エコシステム」 . odata.org .
  10. ^ Progress DataDirect ハイブリッド データ パイプライン
  11. ^ 「SAP NetWeaver Gateway」 . 2012年11月22日閲覧
  12. ^ IBM developerWorks eXtreme Scale REST データ サービス(OData)
  13. ^ 「Office 365 API へようこそ」 . docs.microsoft.com . 2018年8月28日. 2019年9月24日閲覧
  14. ^ 「OData 2.0 または 4.0 アダプタを使用して外部データにアクセスするための Salesforce Connect の設定」
  15. ^スカイビアコネクト
  16. ^ 「OData - Tableau」 . help.tableau.com . 2019年9月24日閲覧
  17. ^ 「ODataとSpotfire」。TIBCOブログ2016年3月30日閲覧。
  18. ^ Mulesoft
  19. ^ 「Anypoint Exchange」 www.mulesoft.com 20199月24日閲覧
  20. ^サクセスファクターズ
  21. ^セリディアンHCMのデイフォース
  22. ^ 「HRレポートソフトウェア - Dayforce | Ceridian」www.ceridian.com . 2019年9月24日閲覧
  23. ^ 「Redfish APIについて知っておくべきこと」Exxact2017年12月1日。 2019年8月31日閲覧
  24. ^ 「Nucleon Database Master」 。 2017年11月16日閲覧