[收藏][转帖]网格计算入门 -- 作者:admin |
keven 发表于 2005/6/6 8:45:09 | 本文转载自W3CHINA.ORG讨论区(BBS.W3CHINA.ORG) 原文链接作者:davylakerxml以下为原文:hax 译自 http://www-db.stanford.edu/~melnik/rdf/db.html版权开放,欢迎转载 copyleft 2003, hax<hax@sjtu.edu.cn>.========================术语译名: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 http://www.vldb.org/conf/2001/P149.pdf存储RDF的数据库模式-------------------(最近的投稿在前)清晰的模型(Explicit models)-------------------------------贡献者:Brian MacBride<bwm@hplb.hpl.hp.com>日期:2000/5/11摘要:本表示法清晰的表现模型并使用了视图数据库模式(Oracle)和作者的描述: sql = "CREATE TABLE RDFRESOURCE" + "(" + "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," + "ObjResource 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 RootModel" + " AS SELECT UNIQUE Id, Subject, Predicate, ObjResource, ObjLiteral, Res, Asserted, Reified" + " FROM RDFModel, RDFStatement" + " WHERE RDFModel.Statement = RDFStatement.Id";这创建一个人造的模型视图,包含数据库里所有的语句,无论语句在哪一个“实际的”模型里。视图被大量使用。每个模型都是一个视图,即一个在其他模型视图或者RootModel视图之上的查询。因此每次Stanford API 调用一个创建模型的操作——如某个查询,数据库里就创建一个新的视图。这必然会导致一些对数据库的查询引擎来说异乎寻常的查询,而我就依靠数据库的查询优化器来整理之。这里也存在因陈旧失效的视图被留在数据库里而可能的应用崩溃问题。 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)有个问题。当前,模式像模型一样处理,并可以输入到模式有效性校验器。没有尝试使用模式来定义一个更特殊的数据库结构。<完>参与讨论本主题
|
|
回复:[收藏][转帖]网格计算入门 -- 作者:admin |
sx(游客)发表评论于2010/3/22 12:35:52 | <a href="http://www.1461.com">cwofw</a>
[url=http://www.fjwowfjf.cn]wfwfe[/url]
wfwfe
|
|
» 1 »
|

.: 公告
|
« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
.: 我的分类(专题)
|

.: 最新日志
.: 最新回复
|

blog名称: 日志总数:7 评论数量:2 留言数量:0 访问次数:75062 建立时间:2005年3月12日 |
|

.: 留言板
|

.: 链接
|

|