国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP 構建語義Web CRUD 操作

2024-05-04 23:05:45
字體:
來源:轉載
供稿:網友
菜鳥學堂:

創建、讀、更新和刪除(create/read/update/delete,crud)操作是最基本的數據庫操作,但是它們也是最重要的操作。crud 操作通常是使用關系數據庫系統中的結構化查詢語言(structured query language,sql)完成的。隨著 web 變得更加具有面向數據特性,因此需要從基于 sql 的 crud 操作轉移到基于語義 web 的 crud 操作。了解如何使用 php 通過基于語義的 web 執行 crud 操作。 常用縮寫詞

api — 應用程序編程接口(application programming interface)

crud — 創建/讀/更新/刪除(create/read/update/delete)

http — 超文本傳輸協議(hypertext transfer protocol)

mvc — 模式—視圖—控制器(model-view-controller)

oop — 面向對象的編程(object-oriented programming)

rdf — 資源描述框架(resource description framework)

sparql — 簡單協議和 rdf 查詢語言(simple protocol and rdf query language)

sql — 結構化查詢語言(structured query language)

ui — 用戶界面(user interface)

w3c — 萬維網聯盟(world wide web consortium)

在開發 web 應用程序時,為邏輯層和 ui 層創建放置服務器端代碼的數據庫結構是一種標準實踐。要連接到數據庫,服務器端代碼需要執行一些基本的創建、更新、刪除和 — 最重要的 — 讀取記錄等操作。由于 web 應用程序的后臺數據庫通常都是關系數據庫,因此這些 crud 操作都是使用眾所周知的 sql 語言執行的。但是,隨著 web 開發越來越多地采用面向對象的編程(oop),模型也隨之發生改變。

資源描述框架(resource description framework,rdf)是描述對象同時保留數據含義的理想方法。簡單協議和 rdf 查詢語言(simple protocol and rdf query language,sparql — 發音為 “sparkle”)是通常用于針對該數據進行查詢的語言,因為它在語句構成上匹配 rdf 本身的結構。rdf 和 sparql 都是所謂 語義 web 棧(semantic web stack)中的技術。

要徹底地應用語義 web 理念,您可以使用 sparql 將傳統的 web 開發技術應用到 rdf 數據中。本文將展示如何使用簡化的模式—視圖—控制器(model-view-controller,mvc)設計模型、php 服務器端腳本語言和 sparql 連接到 rdf — 與使用關系數據庫系統中的 sql 相反。

sql 和 sparql crud 操作

先決條件 本文假定您基本了解 sql、php 和 web 應用程序開發。了解語義 web 也十分有利。要對基于語義 web 的數據運行 create、update 和 delete 命令,需要具有支持 sparql/update 規范的語義 web 數據庫。

在使用 sql 和 sparql 進行開發時,需要查看一下 crud 操作之間的異同。清單 1 顯示了 read 操作的 sql 代碼。

select realname, dob, locationfrom usertable where realname = "john smith";

將這段基于 sql 的代碼與清單 2 中所示的基于 sparql 的代碼相比較。采用這兩個 read 操作的原因在于它們最易于理解、實現和說明。這對于 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 .} ;

在比較兩張清單時,您的第一個想法很可能是 sparql 版本明顯比 sql 版本長很多。這是事實,但是請不要誤以為 sql 必然更簡單而且更干凈。根據所運行引擎的不同,sparql 可以全部通過稱為鏈接數據結果(linked data effect)的內容進行分發。此外,它允許擁有動態模式,因為它擁有互相鏈接的面向對象的透視圖,與嚴格的 sql 關系透視圖形成對照。如果您想要把關系數據庫表分隔為許多數據孤島,則實際上使用的 sql 代碼行將比 sparql 多很多 — 更不必說 sql 中會出現大量令人討厭的 join 描述符。

sparql 的前兩行是 prefix 聲明。根據語義 web 理論,一切內容 — 無論是對象還是數據圖來源(也是一個對象)— 都有統一資源標識符(uniform resource identifier,uri)。prefix 行只是將臨時標簽應用到一些 uri 中 — 在本例中為 friend of a friend 和 rdf 模式。其中的好處是您以后可以在查詢中使用 prefix 聲明而不必使用完整的 uri。

sparql 代碼的下一行描述了查詢請求。這條語句在本質上與 sql 語句相同,不同之處是對 uri 的附加請求。注意問號的使用(?)是為了表示術語是變量。

from 語句描述了獲取數據的位置。這在 sql 和 sparql 中是相同的,只是在 sparql 中,數據源名稱是 uri,而非表示計算機或網絡中某個物理位置的字符串。

兩者的 where 語句完全不同,因為使用 sparql,必須指定用于獲取數據的模式。同樣,如果嘗試過使用關系方法執行此操作,則需要花費的代價比普通 sql 多得多:需要使用 php、java? 編程語言或者一些其他服務器端語言才能執行數據源之間的檢查。sparql 代碼行完成的操作比較明了,這包括確保正在檢索的數據只屬于 person 類型。sparql 將獲取名稱和位置,同時執行一些模式匹配以查找正確的 john smith。

創建

sparql 中的 crud 操作通常比 read 操作更神秘。但是,可以完成這些操作。首先,create 操作將把新記錄或對象插入到表或圖表中。

insert into usertable (realname, dob, location) values ("john smith", "1985-01-01", "bristol, uk");

現在,比較清單 3 中基于 sql 的代碼與清單 4 中基于 sparql 的代碼中的 create 操作。

prefix foaf:<http://xmlns.com/foaf/0.1/> prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>insert into graph <http://www.example.com/graph> (?realname, ?dob, ?location) {<http://www.example.org/graph/johnsmith#me> rdf:type foaf:person ; foaf:name "john smith" ; foaf:birthday <1985-01-01t00:00:00> ; foaf:location "bristol, uk" }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊川县| 祁东县| 广水市| 中卫市| 汉中市| 阿克陶县| 抚松县| 温宿县| 若羌县| 浑源县| 清苑县| 济阳县| 建昌县| 望都县| 万州区| 霍邱县| 玛沁县| 庆云县| 丹凤县| 尉氏县| 稻城县| 长子县| 乌拉特前旗| 响水县| 泰安市| 西充县| 丘北县| 景洪市| 慈利县| 金川县| 蓬安县| 罗源县| 如皋市| 大港区| 林芝县| 静安区| 扎兰屯市| 宜章县| 霞浦县| 寻乌县| 天长市|