午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

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

創(chuàng)建、讀、更新和刪除(Create/Read/Update/Delete,CRUD)操作是最基本的數(shù)據(jù)庫操作,但是它們也是最重要的操作。CRUD 操作通常是使用關(guān)系數(shù)據(jù)庫系統(tǒng)中的結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)完成的。隨著 Web 變得更加具有面向數(shù)據(jù)特性,因此需要從基于 SQL 的 CRUD 操作轉(zhuǎn)移到基于語義 Web 的 CRUD 操作。了解如何使用PHP通過基于語義的 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 — 簡單協(xié)議和 RDF 查詢語言(Simple Protocol and RDF Query Language)

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

UI — 用戶界面(User interface)

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

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

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

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

SQL 和 SPARQL CRUD 操作

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

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

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

將這段基于 SQL 的代碼與清單 2 中所示的基于 SPARQL 的代碼相比較。采用這兩個 read 操作的原因在于它們最易于理解、實(shí)現(xiàn)和說明。這對于 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 版本長很多。這是事實(shí),但是請不要誤以為 SQL 必然更簡單而且更干凈。根據(jù)所運(yùn)行引擎的不同,SPARQL 可以全部通過稱為鏈接數(shù)據(jù)結(jié)果(linked data effect)的內(nèi)容進(jìn)行分發(fā)。此外,它允許擁有動態(tài)模式,因?yàn)樗鼡碛谢ハ噫溄拥拿嫦驅(qū)ο蟮耐敢晥D,與嚴(yán)格的 SQL 關(guān)系透視圖形成對照。如果您想要把關(guān)系數(shù)據(jù)庫表分隔為許多數(shù)據(jù)孤島,則實(shí)際上使用的 SQL 代碼行將比 SPARQL 多很多 — 更不必說 SQL 中會出現(xiàn)大量令人討厭的 JOIN 描述符。

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

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

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

兩者的 WHERE 語句完全不同,因?yàn)槭褂?SPARQL,必須指定用于獲取數(shù)據(jù)的模式。同樣,如果嘗試過使用關(guān)系方法執(zhí)行此操作,則需要花費(fèi)的代價比普通 SQL 多得多:需要使用 PHP、Java?編程語言或者一些其他服務(wù)器端語言才能執(zhí)行數(shù)據(jù)源之間的檢查。SPARQL 代碼行完成的操作比較明了,這包括確保正在檢索的數(shù)據(jù)只屬于 Person 類型。SPARQL 將獲取名稱和位置,同時執(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
主站蜘蛛池模板: 99一区二区三区 | 日韩欧美国产高清91 | 91黄色免费| 成人免费视频国产免费网站 | 欧美三级美国一级 | 亚洲第一视频网站 | 青青国产在线 | 性网站在线观看 | 亚洲不卡一 | 操操操视频 | 色欧美色| 国产精品一区二区三区不卡 | 天天爱天天色 | 亚洲国产精品va在线看黑人 | 国产精品男女 | 麻豆av网址 | 成人18视频免费69 | 99视频+国产日韩欧美 | 亚洲天堂自拍 | 日韩视频在线观看免费 | 中文字幕av亚洲精品一部二部 | 免费av网站在线 | 香蕉视频在线播放 | 午夜精华 | 黄色录像特级片 | 91视频看看 | 激情97 | 三级a毛片| av在线播放一区 | 日本久久中文字幕 | 三年中文免费观看大全动漫 | 国产伦一区二区三区 | 免费黄色片子 | 欧美性大交 | 中文字幕色哟哟 | 国产人成一区二区三区影院 | 成人a视频在线观看 | 日本欧美一区二区三区 | 欧美三级视频在线观看 | 美女色网 | 夜色成人 |