色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP構(gòu)建語(yǔ)義Web CRUD操作

瀏覽:98日期:2024-01-14 14:16:50

創(chuàng)建、讀、更新和刪除(Create/Read/Update/Delete,CRUD)操作是最基本的數(shù)據(jù)庫(kù)操作,但是它們也是最重要的操作。CRUD 操作通常是使用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language,SQL)完成的。隨著 Web 變得更加具有面向數(shù)據(jù)特性,因此需要從基于 SQL 的 CRUD 操作轉(zhuǎn)移到基于語(yǔ)義 Web 的 CRUD 操作。了解如何使用PHP通過(guò)基于語(yǔ)義的 Web 執(zhí)行 CRUD 操作。 常用縮寫詞

API — 應(yīng)用程序編程接口(Application Programming Interface)

CRUD — 創(chuàng)建/讀/更新/刪除(Create/Read/Update/Delete)

HTTP —超文本傳輸協(xié)議(Hypertext Transfer Protocol)

MVC — 模式—視圖—控制器(Model-View-Controller)

OOP — 面向?qū)ο蟮木幊蹋∣bject-Oriented Programming)

RDF — 資源描述框架(Resource Description Framework)

SPARQL — 簡(jiǎn)單協(xié)議和 RDF 查詢語(yǔ)言(Simple Protocol and RDF Query Language)

SQL — 結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)

UI — 用戶界面(User interface)

W3C — 萬(wàn)維網(wǎng)聯(lián)盟(World Wide Web Consortium)

在開(kāi)發(fā)Web 應(yīng)用程序時(shí),為邏輯層和 UI 層創(chuàng)建放置服務(wù)器端代碼的數(shù)據(jù)庫(kù)結(jié)構(gòu)是一種標(biāo)準(zhǔn)實(shí)踐。要連接到數(shù)據(jù)庫(kù),服務(wù)器端代碼需要執(zhí)行一些基本的創(chuàng)建、更新、刪除和 — 最重要的 — 讀取記錄等操作。由于 Web 應(yīng)用程序的后臺(tái)數(shù)據(jù)庫(kù)通常都是關(guān)系數(shù)據(jù)庫(kù),因此這些 CRUD 操作都是使用眾所周知的 SQL 語(yǔ)言執(zhí)行的。但是,隨著 Web 開(kāi)發(fā)越來(lái)越多地采用面向?qū)ο蟮木幊蹋∣OP),模型也隨之發(fā)生改變。

資源描述框架(Resource Description Framework,RDF)是描述對(duì)象同時(shí)保留數(shù)據(jù)含義的理想方法。簡(jiǎn)單協(xié)議和 RDF 查詢語(yǔ)言(Simple Protocol and RDF Query Language,SPARQL — 發(fā)音為 “sparkle”)是通常用于針對(duì)該數(shù)據(jù)進(jìn)行查詢的語(yǔ)言,因?yàn)樗谡Z(yǔ)句構(gòu)成上匹配 RDF 本身的結(jié)構(gòu)。RDF 和 SPARQL 都是所謂 語(yǔ)義 Web 棧(semantic Web stack)中的技術(shù)。

要徹底地應(yīng)用語(yǔ)義 Web 理念,您可以使用 SPARQL 將傳統(tǒng)的 Web 開(kāi)發(fā)技術(shù)應(yīng)用到 RDF 數(shù)據(jù)中。本文將展示如何使用簡(jiǎn)化的模式—視圖—控制器(Model-View-Controller,MVC)設(shè)計(jì)模型、PHP 服務(wù)器端腳本語(yǔ)言和 SPARQL 連接到 RDF — 與使用關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的 SQL 相反。

SQL 和 SPARQL CRUD 操作

先決條件 本文假定您基本了解 SQL、PHP 和 Web 應(yīng)用程序開(kāi)發(fā)。了解語(yǔ)義 Web 也十分有利。要對(duì)基于語(yǔ)義 Web 的數(shù)據(jù)運(yùn)行 create、update 和 delete 命令,需要具有支持 SPARQL/Update 規(guī)范的語(yǔ)義 Web 數(shù)據(jù)庫(kù)。

在使用 SQL 和 SPARQL 進(jìn)行開(kāi)發(fā)時(shí),需要查看一下 CRUD 操作之間的異同。清單 1 顯示了 read 操作的 SQL 代碼。

SELECT realname, dob, locationFROM UserTable WHERE realname = 'John Smith';

將這段基于 SQL 的代碼與清單 2 中所示的基于 SPARQL 的代碼相比較。采用這兩個(gè) read 操作的原因在于它們最易于理解、實(shí)現(xiàn)和說(shuō)明。這對(duì)于 SQL 和 SPARQL 來(lái)說(shuō)都是一樣的。

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 .} ;

在比較兩張清單時(shí),您的第一個(gè)想法很可能是 SPARQL 版本明顯比 SQL 版本長(zhǎng)很多。這是事實(shí),但是請(qǐng)不要誤以為 SQL 必然更簡(jiǎn)單而且更干凈。根據(jù)所運(yùn)行引擎的不同,SPARQL 可以全部通過(guò)稱為鏈接數(shù)據(jù)結(jié)果(linked data effect)的內(nèi)容進(jìn)行分發(fā)。此外,它允許擁有動(dòng)態(tài)模式,因?yàn)樗鼡碛谢ハ噫溄拥拿嫦驅(qū)ο蟮耐敢晥D,與嚴(yán)格的 SQL 關(guān)系透視圖形成對(duì)照。如果您想要把關(guān)系數(shù)據(jù)庫(kù)表分隔為許多數(shù)據(jù)孤島,則實(shí)際上使用的 SQL 代碼行將比 SPARQL 多很多 — 更不必說(shuō) SQL 中會(huì)出現(xiàn)大量令人討厭的 JOIN 描述符。

SPARQL 的前兩行是 PREFIX 聲明。根據(jù)語(yǔ)義 Web 理論,一切內(nèi)容 — 無(wú)論是對(duì)象還是數(shù)據(jù)圖來(lái)源(也是一個(gè)對(duì)象)— 都有統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifier,URI)。PREFIX 行只是將臨時(shí)標(biāo)簽應(yīng)用到一些 URI 中 — 在本例中為 Friend of a Friend 和 RDF 模式。其中的好處是您以后可以在查詢中使用 PREFIX 聲明而不必使用完整的 URI。

SPARQL 代碼的下一行描述了查詢請(qǐng)求。這條語(yǔ)句在本質(zhì)上與 SQL 語(yǔ)句相同,不同之處是對(duì) URI 的附加請(qǐng)求。注意問(wèn)號(hào)的使用(?)是為了表示術(shù)語(yǔ)是變量。

FROM 語(yǔ)句描述了獲取數(shù)據(jù)的位置。這在 SQL 和 SPARQL 中是相同的,只是在 SPARQL 中,數(shù)據(jù)源名稱是 URI,而非表示計(jì)算機(jī)或網(wǎng)絡(luò)中某個(gè)物理位置的字符串。

兩者的 WHERE 語(yǔ)句完全不同,因?yàn)槭褂?SPARQL,必須指定用于獲取數(shù)據(jù)的模式。同樣,如果嘗試過(guò)使用關(guān)系方法執(zhí)行此操作,則需要花費(fèi)的代價(jià)比普通 SQL 多得多:需要使用 PHP、Java?編程語(yǔ)言或者一些其他服務(wù)器端語(yǔ)言才能執(zhí)行數(shù)據(jù)源之間的檢查。SPARQL 代碼行完成的操作比較明了,這包括確保正在檢索的數(shù)據(jù)只屬于 Person 類型。SPARQL 將獲取名稱和位置,同時(shí)執(zhí)行一些模式匹配以查找正確的 John Smith。

創(chuàng)建

SPARQL 中的 CRUD 操作通常比 read 操作更神秘。但是,可以完成這些操作。首先,create 操作將把新記錄或?qū)ο蟛迦氲奖砘驁D表中。

INSERT INTO UserTable (realname, dob, location) VALUES ('John Smith', '1985-01-01', 'Bristol, UK');

現(xiàn)在,比較清單 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' }

標(biāo)簽: PHP
主站蜘蛛池模板: 国产精品亚洲欧美日韩久久 | 国产一级久久免费特黄 | www一级片 | 欧美大片a一级毛片视频 | 性欧美巨大的视频 | 欧美一级在线毛片免费观看 | 在线视频 亚洲 | 欧美色欧美色 | 毛片免费全部播放一级 | 97在线观看免费版 | 毛片高清一区二区三区 | 国产91精品久久久久999 | 久操中文在线 | 日本乱子伦xxxx | 黄色激情在线 | 日本一级级特黄特色大片 | cao在线| 欧美jizz18性欧美 | 国产激情一级毛片久久久 | 久久中文字幕综合不卡一二区 | 亚洲国产精品久久人人爱 | 免费一级毛片在播放视频 | 日本一区二区三区四区无限 | 日韩精品综合 | 亚洲国产精品久久卡一 | a视频免费 | 永久免费看毛片 | 国产在线视频专区 | 久久免费成人 | 国产欧美精品三区 | 在线看片a | 欧美特黄一级高清免费的香蕉 | 欧美一区二区视频 | 日本韩国欧美在线 | 精品久久久久不卡无毒 | 国产精品99精品久久免费 | 毛片在线观看视频 | 国产欧美视频在线观看 | 日韩免费a级在线观看 | 欧美人牲囗毛片 | 在线观看国产一区二区三区99 |