在關聯式資料庫中儲存RDF (轉)
本文分類應該在大類下,但CSDN目光短淺,只在網站製作技術和下有XML分類。RDF與M$無任何關係,所以姑且放在網站製作技術-XML之下。
hax 譯自 .stanford.edu/~melnik/rdf/db.html" target=_blank>~melnik/rdf/db.html
版權開放,歡迎轉載 copyleft , hax
========================
術語譯名:
RDF model RDF模型
RDF statement RDF語句
literal 文字常量
namespace 名稱空間
table 表
field 欄位
========================
本頁概述了當前在關係裡RDF的幾種方法,
*THIS IS A REQUEST FOR COMMENTS*,請將您的想法投稿
到 (www-rdf-interest@w3.org)!
動機(Motiviation)
-------------------
我們需要永久儲存和操作(大量的)RDF資料。一個可選的做法是使
用關聯式資料庫技術。這個方法的主要優點是它提供了一個可升級的
通用方案。
準則(Criteria)
----------------
這個不完全的列表指出了資料庫設計需要考慮的準則(無先後順序):
* 可伸縮性:我們能儲存和查詢超過十億(1B+)的triples嗎?
* 查詢:支援哪一類的查詢?它們可以被容易的公式化表述和處理嗎?
* :查詢的耗費多大?交付查詢結果的耗費呢?
* :我們能如何處理refication?
* 組織:怎樣在儲存資料之上建立關聯?我們能對RDF models進行
易分辨的混合並仍能確定triples來自何處嗎?
以下的提議方案從不同方面滿足上述準則。本頁的維護者對可伸縮性
問題尤感興趣。請將反映你需求的準則提交給我!
出版物(Publications)
----------------------
下面這個論文討論了以垂直模式儲存和查詢稀疏的關係表,這與一些
提議方案的精神非常相似:
R. Agrawal, A. Somani, and Y. Xu: Storage and Querying of
E-Commerce Data, Proc. VLDB 2001, Roma, Italy, available as
儲存RDF的資料庫模式
-------------------
(最近的投稿在前)
清晰的模型(Explicit models)
-------------------------------
貢獻者:Brian MacBr
日期:2000/5/11
摘要:本表示法清晰的表現模型並使用了檢視
資料庫模式()和作者的描述:
= "CREATE TABLE RDFRE"
+ "("
+ "Id INTEGER not null primary key,"
+ "NS INTEGER not null,"
+ "RoName varchar(255)"
+ ")";
資源表儲存所有的資源,Id是內部的識別符號欄位,NS是個指標,指向
namespace表的條目以給出資源的名稱空間。RoName應該叫做‘localname’,
是Qname的區域性命名部分。
sql = "CREATE TABLE RDFNameSpace"
+ "("
+ "Id INTEGER not null primary key,"
+ "NsName varchar(255)"
+ ")";
名稱空間表。
sql = "CREATE TABLE RDFLiteral"
+ "("
+ "Id INTEGER not null primary key,"
+ "VAL varchar (4000)"
+ ")";
literals [hax注:可譯作文字常量] 表。 4000字元的限制對當前目
標來說足夠。[hax注:Oralce的可變字串的上限是4000位元組]
sql = "CREATE TABLE RDFStatement"
+ "("
+ "Id INTEGER not null primary key,"
+ "Subject INTEGER not null,"
+ "Predicate INTEGER not null,"
+ "Obsource INTEGER not null,"
+ "ObjLiteral INTEGER not null,"
+ "Res CHAR(1) not null"
+ ")";
Statement [hax注:可譯作語句或陳述] 表。最初是單個欄位,
可以有一個物件或者文字常量的ID。使用一個複雜的JOIN來列
舉陳述,但並不如期望的執行。可能是我對SQL不足。而這個工
作和感覺更“正確”。Res是一個標誌以說明物件是資源還是文字常
量。
sql = "CREATE TABLE RDFModel"
+ "("
+ "ModelId INTEGER not null,"
+ "Statement INTEGER not null,"
+ "Asserted CHAR(1) not null,"
+ "Reified CHAR(1) not null,"
+ "primary key(ModelId, Statement)"
+ ")";
資料庫可以處理多個models [hax注:可譯作模型]。這個表儲存了每
個模型的語句列表。最初該表由語句表組合,但當集合操作時不
能工作。
Asserted標誌說明該語句用於給模型作斷言。
Reified標誌說明該模型用於使模型具體化。
後者是留給未來實現的掛鉤(hook)。具體化(Reification)沒有
被實現,因此這個方法是未經測試的。
每個模型都是資源,並在資源表裡有一個記錄。ModelId欄位是該資
源的識別符號。這樣,就可以寫關於某個模型的語句。這裡有一個模型
的類,這樣可以在確認模型有效性時列出需要被載入的模式(schemas)。
sql = "CREATE OR REPLACE VIEW Model"
+ " AS UNIQUE Id, Subject, Predicate,
ObjResource, ObjLiteral, Res, Asserted, Reified"
+ " FROM RDFModel, RDFStatement"
+ " WHERE RDFModel.Statement = RDFStatement.Id";
這建立一個人造的模型檢視,包含資料庫裡所有的語句,無論語句在
哪一個“實際的”模型裡。
檢視被大量使用。每個模型都是一個檢視,即一個在其他模型檢視或
者RootModel檢視之上的查詢。因此每次Stanford 一個建立
模型的操作——如某個查詢,資料庫裡就建立一個新的檢視。這必然
會導致一些對資料庫的查詢引擎來說異乎尋常的查詢,而我就依靠數
據庫的查詢最佳化器來整理之。這裡也存在因陳舊失效的檢視被留在數
據庫裡而可能的應用崩潰問題。
sql = "CREATE TABLE RDFKEYS"
+ "("
+ "TableName char(10) not null primary key,"
+ "Key INTEGER not null"
+ ")";
sql = "INSERT INTO RDFKEYS (TableName, Key)
VALUES('Resource', 0)";
sql = "INSERT INTO RDFKEYS (TableName, Key)
VALUES('NameSpace', 0)";
一個鍵發生表。可能可以使用序列器(sequencer) [hax注:Oracle
使用序列產生自動遞增或迴圈的數字],但看起來有點資料庫特性相
關,至少不是我一開始想要的,儘管真的只需要一個發生器。
關於模式(schemas)有個問題。當前,模式像模型一樣處理,並可以
輸入到模式有效性校驗器。沒有嘗試使用模式來定義一個更特殊的數
據庫結構。
原貼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-958713/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關聯式資料庫之父 (轉)資料庫
- 相比NoSQL,關聯式資料庫為何不適合儲存影像? - RedditSQL資料庫
- 怎樣在資料庫中儲存貨幣資料庫
- 【轉載】關聯式資料庫還是NoSQL資料庫資料庫SQL
- 樹型結構資料在資料庫基本表中的儲存及維護 (轉)資料庫
- 關聯式資料庫SQL語言詳解(轉)資料庫SQL
- Web Sql 關聯式資料庫WebSQL資料庫
- 關聯式資料庫設計資料庫
- 關於在BSTR中儲存二進位制資料的若干問題 (轉)
- MySQL資料庫的儲存引擎(轉)MySql資料庫儲存引擎
- 物件導向的關聯式資料庫設計(轉)物件資料庫
- 關聯式資料庫與文件資料庫對比資料庫
- 在瀏覽器上儲存資料(轉)瀏覽器
- 關聯式資料庫分片原則資料庫
- 使用資料庫儲存session的方法 (轉)資料庫Session
- 資料庫 - 關聯式資料庫標準語言SQL資料庫SQL
- 從關聯式資料庫遷移到NoSQL雲資料庫資料庫SQL
- 列式儲存資料庫資料庫
- MySQL 8.0 在關聯式資料庫方面有這些新特性MySql資料庫
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- 關聯式資料庫的封建迷信資料庫
- 從關聯式資料庫遷移到CouchDB資料庫
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 分散式儲存中的資料分佈策略分散式
- 關於資料庫中儲存中文的問題,請高手指點資料庫
- 淺談資料庫中的儲存過程資料庫儲存過程
- 分散式系統技術:儲存之資料庫分散式資料庫
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 分散式文件儲存資料庫之MongoDB副本集分散式資料庫MongoDB
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- 現在後端都在用什麼資料庫儲存資料?後端資料庫
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於資料庫儲存結構Oracle資料庫
- 大資料時代的資料儲存,非關係型資料庫MongoDB大資料資料庫MongoDB
- 不用VC中的Document能否儲存資料 (轉)
- MySQL 資料庫儲存引擎MySql資料庫儲存引擎
- DTO、儲存庫和資料對映器在DDD中的作用 | Khalil Stemmler
- 從關聯式資料庫向NoSQL遷移資料庫SQL
- 關聯式資料庫SQL語言略解資料庫SQL