コンピューティングにおいて、オープン データ プロトコル( 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 はリレーショナル データベースに限定されません。
標準化
Microsoft による最初の開発の後、OData は OASIS OData 技術委員会 (TC) の標準化されたプロトコルになりました。
OASIS OData 技術委員会
「OASIS OData TC は、企業、クラウド、モバイル デバイスでの再利用のために、さまざまなアプリケーションや複数の関係者間でのデータのクエリと共有を簡素化する取り組みを行っています。REST ベースのプロトコルである OData は、HTTP、AtomPub、JSONを基盤とし、 URI を使用してデータ フィード リソースのアドレス指定とアクセスを行います。これにより、リレーショナル データベース、ファイル システム、コンテンツ管理システム、従来の Web サイトなど、さまざまなソースから情報にアクセスできるようになります。OData は、データ コンシューマーがデータ プロデューサーと相互運用できるエコシステムを作成することで、データ サイロを解消し、データの共有価値を高める方法を提供します。このエコシステムは、現在可能な方法よりもはるかに強力であり、より多くのアプリケーションが幅広いデータ セットを理解できるようになります。このエコシステムに参加するすべてのデータ プロデューサーとコンシューマーは、全体的な価値を高めます。」[8]
TC 参加者には、CA Technologies、Citrix Systems、IBM、Microsoft、Progress Software、Red Hat、SAP SE、SDLが含まれます。
建築
OData は、Web API の作成と使用のためのプロトコルです。OData は、URI を使用してデータ フィード リソースをアドレス指定し、アクセスする HTTP、AtomPub、JSON を基盤としています。
リソースの識別
OData は URI を使用してリソースを識別します。サービス ルートがhttp://host/service/と省略されるすべての OData サービスでは、次の固定リソースが見つかります。
サービス文書
サービス ドキュメントには、取得できるエンティティ セット、関数、およびシングルトンがリストされます。クライアントは、サービス ドキュメントを使用して、ハイパーメディア駆動方式でモデルをナビゲートできます。
サービスドキュメントはhttp://host/service/から入手できます。
メタデータドキュメント
メタデータ ドキュメントには、OData サービスが認識する型、セット、関数、およびアクションが記述されています。クライアントはメタデータ ドキュメントを使用して、サービス内のエンティティをクエリおよび操作する方法を理解できます。
メタデータ ドキュメントはhttp://host/service/$metadataで入手できます。
動的リソース
動的リソースの URI は、サービス ドキュメントとメタデータ ドキュメント内の ハイパーメディア情報から計算される場合があります。
リソース操作
OData は、HTTP 動詞を使用してリソースに対する操作を示します。
- GET: リソース (エンティティのコレクション、単一のエンティティ、構造プロパティ、ナビゲーション プロパティ、ストリームなど) を取得します。
- POST: 新しいリソースを作成します。
- PUT: 既存のリソースを完全なインスタンスに置き換えて更新します。
- PATCH: プロパティの一部を部分インスタンスに置き換えて、既存のリソースを更新します。
- 削除: リソースを削除します。
クエリ
OData エンドポイントから要求された URL には、クエリ オプションが含まれる場合があります。OData プロトコルは、エンドポイントが受け入れる必要があるさまざまな「システム クエリ オプション」を指定します。これらを使用して、データをフィルター処理、順序付け、マップ、またはページ分割できます。
クエリ オプションは、文字の後の URL に追加でき、文字?で区切られます。各オプションは、- 記号で始まる名前と、記号で区切られた値で構成されます(例: )。データのフィルタリングに使用するための論理演算子と関数がいくつか定義されています (例: )。は、価格が 10 未満で、名前が文字「M」で始まる製品を要求します。
&$=OData/Products?$top=2&$orderby=NameOData/Products?$filter=Price lt 10.00 and startswith(Name,'M')
リソース表現
OData は、データとデータ モデルを表すためにさまざまな形式を使用します。OData プロトコル バージョン 4.0 では、JSON 形式がデータを表す標準であり、Atom形式はまだ委員会の仕様策定段階にあります。データ モデルを表すために、共通スキーマ定義言語 (CSDL) が使用されます。これは、OData サービスによって公開されるエンティティ データ モデルの XML 表現を定義します。
サンプルの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>
<category term= "#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= "カテゴリ" href= "製品(0)/カテゴリ" />
<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" />
<タイトル/>
<更新> 2015-05-19T03:38:50Z </更新>
<著者>
<名前/>
</著者>
<コンテンツタイプ= "application/xml" >
<m:プロパティ>
<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:評価m:type= "Int16" > 4 </d:評価>
<d:価格m:type= "Double" > 2.5 </d:価格>
</m:プロパティ>
</コンテンツ>
</エントリ>
<エントリ>
<id> http://services.odata.org/V4/OData/OData.svc/Products(1) </id>
<category term= "#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= "カテゴリ" href= "製品(1)/カテゴリ" />
<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= "製品(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= "製品(1)/ProductDetail" />
<タイトル/>
<更新> 2015-05-19T03:38:50Z </更新>
<著者>
<名前/>
</著者>
<コンテンツタイプ= "application/xml" >
<m:プロパティ>
<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:評価m:type= "Int16" > 3 </d:評価>
<d:価格m:type= "ダブル" > 3.5 </d:価格>
</m:プロパティ>
</コンテンツ>
</エントリ>
...
</フィード>
サンプル OData メタデータ ドキュメント
<edmx:Edmxバージョン = "4.0" xmlns:edmx = "http://docs.oasis-open.org/odata/ns/edmx" >
<edmx:データサービス>
<スキーマ名前空間 = "ODataDemo" xmlns = "http://docs.oasis-open.org/odata/ns/edm" >
<EntityType名 = "製品" >
<キー>
<プロパティ参照名= "ID" />
</キー>
<プロパティ名= "ID"タイプ= "Edm.Int32" Nullable= "false" />
<プロパティ名 = "Name"タイプ = "Edm.String" />
<プロパティ名 = "説明"タイプ = "Edm.String" />
<プロパティ名 = "ReleaseDate"タイプ = "Edm.DateTimeOffset" Nullable = "false" />
<プロパティ名 = "DiscontinuedDate"タイプ = "Edm.DateTimeOffset" />
<プロパティ名= "評価"タイプ= "Edm.Int16" Nullable= "false" />
<プロパティ名= "Price"タイプ= "Edm.Double" Nullable= "false" />
</エンティティタイプ>
<ComplexType名 = "アドレス" >
<プロパティ名 = "Street"タイプ = "Edm.String" />
<プロパティ名 = "City"タイプ = "Edm.String" />
<プロパティ名 = "State"タイプ = "Edm.String" />
<プロパティ名 = "ZipCode"タイプ = "Edm.String" />
<プロパティ名 = "Country"タイプ = "Edm.String" />
</複合型>
<EntityContainer名 = "DemoService" >
<EntitySet名 = "製品" EntityType = "ODataDemo.Product" ></EntitySet>
</エンティティコンテナ>
</スキーマ>
</edmx:データサービス>
</edmx:Edmx>
エコシステム
OData のエコシステムは、プロトコルを実装するクライアント/サーバー ライブラリと、プロトコルに基づくアプリケーションで構成されます。
図書館
OData API にアクセスしたり生成したりするために利用できる OData ライブラリは多数あります。
。ネット
- サーバーとクライアント: MicrosoftのOData .NETライブラリ[9]
- クライアント: Simple.OData.Client [10]
ジャワ
- サーバーとクライアント: Apache Olingo [11]
- サーバー側: Jelloフレームワーク[12]
- クライアント: odata-client [13]
JavaScript
- クライアント: Apache Olingo [14] ( OASIS [15]で紹介)
- クライアント: data.js [16]
- クライアント: JayData [17]、より高いレベルの抽象化(LINQのような構文、OData地理機能のサポート、IndexedDB、WebSQL、DevExtreme、Kendo UI、Angular.js、Knockout.js、Senchaとの統合)。
- クライアント: SAPが管理するOpenUI5ライブラリ
- クライアント(Node.js):ノード用JayData [18]
- 依頼者:ブリーズ[19]
- クライアント: OData4およびInvantive Bridge Online [20]
- クライアント: odata-fluent-query: [21] JavaScript ODataクエリ言語パーサー
- サーバー: node-odata [22]
PHP の
- クライアント: odataphp [23]
- サーバー: POData [24]
パイソン
- クライアント: PyOData [25]
- サーバーとクライアント: Pyslet [26]
ルビー
- クライアント: ruby_odataライブラリ[27]
- クライアント: Ruby用無料OData V4.0ライブラリ[28]
- サーバー: サフラノ[29]
その他
他に実装されている言語は以下のとおりです: [30]
- AJAX: ODataにアクセスするためのASP.NET Ajaxライブラリ[31] 。
- C++: odatacpp_client [32]はODataプロトコルのクライアント側のみの実装です。
- Windward Studios [33]は、レポートおよびドキュメント生成ソリューションでODataをサポートしています。
- レポート ツールList & Label には、OData 専用のデータ プロバイダーがあります。
- Blackberry (C++): OData-BB10 [34] BlackBerry 10 (BB10) Cascadesアプリ用Open Data Protocol (OData)ライブラリ
アプリケーション
用途としては以下が挙げられる: [35]
- Progress DataDirectハイブリッドデータパイプライン[36]は、あらゆるクラウド、ビッグデータ、リレーショナルデータソースをODataエンドポイントとして公開できる。
- Socrata はOData API を公開します。
- Microsoft Azure はOData API を公開します。
- Oracle Analytics CloudはOData APIに接続できます
- SAP NetWeaver Gateway [37]はSAP Business SuiteおよびSAP Business WarehouseへのODataアクセスを提供します。
- IBM WebSphere eXtreme Scale RESTデータサービスは、ODataを使用する任意のHTTPクライアントからアクセスできます。[38]
- Microsoft SharePoint 2010以降では、データをODataエンドポイントとして公開できます。
- Office 365はOData V4.0 APIを公開しています。[39]
- Salesforce ConnectはOData APIを使用します。[40]
- Skyvia Connect [41]はODataを介してクラウドとデータベースデータを公開する
- TableauはOData APIに接続できます。[42]
- TIBCO SpotfireはOData APIに接続できます。[43]
- Mulesoft [44]はOData APIとの統合に役立ちます。[45]
- SuccessFactors [46]はOData APIを使用する
- Ceridian HCMのDayforce [47]はOdata [48]を使用している。
- レッドフィッシュはOdataを使用する[49]
ツール
- 核子データベースマスター[50]
参照
- 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日閲覧。
- ^ Microsoft の OData .NET ライブラリ
- ^ シンプル.OData.クライアント
- ^ アパッチ・オリンゴ
- ^ ジェロフレームワーク
- ^ odataクライアント
- ^ アパッチ・オリンゴ
- ^ 「ライブラリ · OData - REST への最良の方法」www.odata.org 。2019 年 2 月 19 日閲覧。
- ^ "data.js". CodePlex アーカイブ。
- ^ ジェイデータ
- ^ ノードの JayData
- ^ そよ風
- ^ OData4 と Invantive Bridge Online
- ^ odata 流暢クエリ
- ^ ノード-Oデータ
- ^ odataphp
- ^ POデータ
- ^ ピオデータ
- ^ ピスレット
- ^ ruby_odata ライブラリ
- ^ Ruby 用無料 OData V4.0 ライブラリ
- ^ サフラノ
- ^ 「ライブラリ」. odata.org .
- ^ ASP.NET Ajax ライブラリ
- ^ odatacpp_クライアント
- ^ ウィンドワードスタジオ
- ^ OData-BB10
- ^ 「エコシステム」。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 日閲覧。
- ^ ミュールソフト
- ^ 「Anypoint Exchange」www.mulesoft.com . 2019年9月24日閲覧。
- ^ サクセスファクター
- ^ セリディアンHCMのデイフォース
- ^ 「HR Reporting Software - Dayforce | Ceridian」www.ceridian.com . 2019年9月24日閲覧。
- ^ 「Redfish API について知っておくべきこと」Exxact 2017-12-01 2019-08-31閲覧。
- ^ 「Nucleon Database Master」 。 2017年11月16日閲覧。
外部リンク
- 公式サイト
- WCF を使用したサービス指向アプリケーションの開発
- OData の基礎プレゼンテーション
OData OASIS 標準
- OData バージョン 4.0 パート 1: プロトコル
- OData バージョン 4.0 パート 2: URL 規則
- OData バージョン 4.0 パート 3: 共通スキーマ定義言語 (CSDL)
- ABNF コンポーネント - OData ABNF 構築ルール バージョン 4.0 および OData ABNF テスト ケース
- 語彙コンポーネント - OData コア語彙と OData メジャー語彙
- XML スキーマ - OData EDMX XML スキーマと OData EDM XML スキーマ
- OData JSON フォーマット バージョン 4.0
委員会の仕様
- OData Atom フォーマット バージョン 4.0
- データ集約用 OData 拡張機能 バージョン 4.0
委員会メモ
- OData バージョン 4.0 の新機能
