作成、読み取り、更新、および削除 (作成/読み取り/更新/削除、CRUD) 操作は、最も基本的なデータベース操作ですが、最も重要な操作でもあります。 CRUD 操作は通常、リレーショナル データベース システムの構造化照会言語 (SQL) を使用して実行されます。 Web がよりデータ指向になるにつれて、SQL ベースの CRUD 操作からセマンティック Web ベースの CRUD 操作に移行する必要があります。 PHP を使用してセマンティックベースの Web で CRUD 操作を実行する方法を学びます。 一般的に使用される略語
API - アプリケーション プログラミング インターフェイス
CRUD - 作成/読み取り/更新/削除
HTTP - ハイパーテキスト転送プロトコル
MVC - パターン - ビュー - コントロール モデル-ビュー-コントローラー
OOP - オブジェクト指向プログラミング
RDF - リソース記述フレームワーク
SPARQL - シンプル プロトコルRDF クエリ言語
SQL - 構造化された構造化クエリ言語
UI - ユーザー インターフェイス
W3C - World Wide Web Consortium
Web アプリケーションを開発する場合、ロジック層と UI 層のサーバー側コードを格納するデータベース構造を作成するのが標準です。 。データベースに接続するには、サーバー側のコードで、レコードの作成、更新、削除、そして最も重要な読み取りなどの基本的な操作を実行する必要があります。 Web アプリケーションのバックエンド データベースは通常リレーショナル データベースであるため、これらの CRUD 操作はよく知られた SQL 言語を使用して実行されます。しかし、Web 開発ではオブジェクト指向プログラミング (OOP) の採用が進むにつれて、モデルが変化してきました。
Resource description Framework (RDF) は、データの意味を維持しながらオブジェクトを説明する理想的な方法です。 Simple Protocol and RDF Query Language (SPARQL、「スパークル」と発音) は、ステートメントの構造が RDF 自体の構造と一致するため、このデータのクエリに通常使用される言語です。 RDF と SPARQL はどちらも、いわゆるセマンティック Web スタックのテクノロジーです。
セマンティック Web の概念を完全に適用するには、SPARQL を使用して従来の Web 開発手法を RDF データに適用します。この記事では、リレーショナル データベース システムで SQL を使用するのではなく、簡素化されたモデル ビュー コントローラー (MVC) 設計モデル、PHP サーバー側スクリプト言語、および SPARQL を使用して RDF に接続する方法を説明します。
SQL および SPARQL CRUD 操作の
前提条件 この記事は、SQL、PHP、および Web アプリケーション開発の基本を理解していることを前提としています。セマンティック Web を理解することも有益です。セマンティック Web ベースのデータに対して作成、更新、および削除コマンドを実行するには、SPARQL/Update 仕様をサポートするセマンティック Web データベースが必要です。
SQL と SPARQL を使用して開発する場合、CRUD 操作の類似点と相違点に注目する必要があります。リスト 1 は、読み取り操作の SQL コードを示しています。
SELECT realname, dob, locationFROM UserTable WHERE realname = "John Smith";
この SQL ベースのコードをリスト 2 に示す SPARQL ベースのコードと比較してください。これら 2 つの読み取り操作を使用する理由は、これらの操作が理解、実装、説明が最も簡単であるためです。これはSQLでもSPARQLでも同様です。
PREFIX foaf:< http://xmlns.com/foaf/0.1/ > PREFIX rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>SELECT ?uri ?name ?
dob ?locationFROM<http://www.example.org/graph>WHERE
{ ?urirdf:type foaf:person ;foaf:name "John Smith" ;foaf:birthday?dob ;foaf:location ?location .} ;
2 つのリストを見て、最初に考えるのは、SPARQL バージョンが SQL バージョンよりもかなり長いということでしょう。これは真実ですが、SQL の方が必然的に単純でクリーンであると考える必要はありません。実行されているエンジンに応じて、SPARQL はすべて、リンクされたデータ効果と呼ばれるものを通じて配信できます。さらに、厳密な SQL リレーショナルの観点とは対照的に、相互にリンクされているオブジェクト指向の観点があるため、動的スキーマを持つことができます。リレーショナル データベース テーブルを多数のデータ サイロに分割したい場合、実際には SPARQL よりも多くの行の SQL コードを使用することになります。言うまでもなく、SQL には煩わしい JOIN 記述子が多数使用されます。
SPARQL の最初の 2 行は PREFIX ステートメントです。セマンティック Web 理論によれば、オブジェクトであってもデータ グラフ ソース (オブジェクトでもあります) であっても、すべてのコンテンツには URI (Uniform Resource Identifier) があります。 PREFIX 行は、単に一時的なタグを何らかの URI (この場合は友人の友人と RDF スキーマ) に適用します。利点は、完全な URI を使用しなくても、後でクエリで PREFIX ステートメントを使用できることです。
SPARQL コードの次の行はクエリ リクエストを記述します。このステートメントは、URI の追加リクエストを除いて、基本的に SQL ステートメントと同じです。用語が変数であることを示すために疑問符 (?) が使用されていることに注意してください。
FROM ステートメントは、データを取得する場所を記述します。これは SQL と SPARQL でも同じですが、SPARQL ではデータ ソース名がコンピューターまたはネットワーク上の物理的な場所を表す文字列ではなく URI である点が異なります。
SPARQL ではデータの取得に使用するスキーマを指定する必要があるため、この 2 つの WHERE ステートメントはまったく異なります。繰り返しになりますが、リレーショナル アプローチを使用してこれを実行しようとすると、単純な SQL よりもはるかにコストが高くなります。データ ソース間のチェックを実行するには、PHP、Java プログラミング言語、またはその他のサーバー側言語を使用する必要があります。 SPARQL コード行が達成することは、取得されるデータの型が person のみであることを保証するなど、比較的簡単です。 SPARQL は名前と場所を取得し、パターン マッチングを実行して正しい John Smith を見つけます。
SPARQL で CRUD 操作を作成することは
、通常、読み取り操作よりも難解です。ただし、これらの操作は完了することができます。まず、作成操作により、テーブルまたはチャートに新しいレコードまたはオブジェクトが挿入されます。
INSERT INTO UserTable (realname, dob, location) VALUES ("John Smith", "1985-01-01", "Bristol, UK");
次に、リスト 3 の SQL ベースのコードと、次の SPARQL ベースのコードを比較してください。リスト 4 での作成操作。
プレフィックス foaf:< http://xmlns.com/foaf/0.1/ > プレフィックス rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>グラフに挿入 < http: //www.example.com/graph > (?realname, ?dob, ?location) {< http://www.example.org/graph/johnsmith#me > rdf:Type foaf:person ;スミス" ; foaf:birthday <1985-01-01T00:00:00> ; foaf:location "ブリストル、英国" }