构建于关系型数据库之上的RDFDB

zamin 2002-09-21 05:55:53
最近我在做一个RDF Database,构架于关系型数据库之上。以下是关于RDFDatabase的结构设计(草案),确定后就要code了(java&oracle)。大家有兴趣的话,不妨看一下,给我提些建议,万分感谢!!

Table RDFModel
ModelId int
StatementID int
//Other fields as Click,Channel and so on.

Table RDFStatement
Subject int
Predicate text
Object int
Prefix text
Flag int

Table RDFResource
ID int
Uri text
Value text
Flag int

Table NameSpace
Prefix text
NS text

任何一个RDF文档都可以分解成许多形如主语-动词-宾语(Subject-Predicate-Object)的三元组(triple)形式声明。档得到一个RDF文档后,首先在表RDFModel中进行注册,然后将一个RDF文档分解成三元组之后一一存入表RDFStatement和RDFResource。
RDFStatement.Rredicate字段存放动词词汇、RDFStatement.Subject和RDFStatement.Object指向资源值存放的地址,Prefix字段存放动词前缀(该词汇的名称域),RDFStatement.Flag字段表示该声明的类型,可能是:0,简单三元组(triple)声明;1,复杂三元组声明(一),其宾语部分为一个匿名资源(又一个<rdf:Description>);2,复杂三元组声明(二),其宾于部分为一个RDF Container(<rdf:Bag>或<rdf:Seq>...)。
三元组中的主语和宾语都是资源,他们的值都将存放于RDFResource中。但是资源又可分为直接资源与间接资源(direct resource/indirect resource),由RDFResource.Flag标出。若是直接资源,RDFResource.Value中将存放该值(value),同时RDFResource.Uri为空;若是间接资源,则RDFResource.Uri将存放该资源定位符(uri),则RDFResource.Value为空。


Sample1:
简单三元组声明的处理:
<?xml version="1.0" encoding="GB2312"?>
<rdf:RDF xmlns:rdf="http://www.w3c.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://www.purl.org/dc/elements/1.0/">
<rdf:Description rdf:about="http://jd.sjtu.edu.cn/sail/">
<dc:title>思航网——思想的航程</dc:title>
<dc:creator>f0103405班</dc:creator>
<dc:date>2002-9-1</dc:date>
</rdf:Description>
</rdf:RDF>

数据库:
--RDFModel--
ModelId StatementId
1 1

--RDFStatement--
Subject Predicate Object Prefix Flag
1 title 2 dc 0
1 creator 3 dc 0
1 date 4 dc 0

--RDFResource--
ID Uri Value Flag
1 null http://jd.sjtu.edu.cn/sail/ 0
2 null 思航网——思想的航程 0
3 null f0103405班 0
4 null 2002-9-1 0

--NameSpace--
Prefix NS
dc http://www.purl.org/dc/elements/1.0/


sample2:
复杂三元组声明(一)的处理:
<?xml version="1.0" encoding="GB2312"?>
<rdf:RDF xmlns:rdf="http://www.w3c.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://www.purl.org/dc/elements/1.0/"
xmlns:dcq="http://www.purl.org/dc/qualifiers/1.0/">
<rdf:Description rdf:about="http://jd.sjtu.edu.cn/sail/">
<dc:title>思航网——思想的航程</dc:title>
<dc:creator>
<dc:Description>
<rdf:value>f0103405班</rdf:value>
<dcq:creatorType>Web</dcq:creatorType>
</dc:Description>
</dc:creator>
<dc:date>2002-9-1</dc:date>
</rdf:Description>
</rdf:RDF>

数据库(继续上面的):
--RDFModel--
ModelId StatementId
1 1
2 5

--RDFStatement--
Subject Predicate Object Prefix Flag
1 title 2 dc 0
1 creator 3 dc 0
1 date 4 dc 0
5 title 6 dc 0
5 creator 6 dc 1
6 value 7 rdf 0
6 createType 8 dcq 0
5 date 9 dc 0

--RDFResource--
ID Uri Value Flag
1 null http://jd.sjtu.edu.cn/sail/ 0
2 null 思航网——思想的航程 0
3 null f0103405班 0
4 null 2002-9-1 0
5 null http://jd.sjtu.edu.cn/sail/ 0
6 null 思航网——思想的航程 0
7 null f0103405班 0
8 null Web 0
9 null 2002-9-1 0


--NameSpace--
Prefix NS
dc http://www.purl.org/dc/elements/1.0/
rdf http://www.w3c.org/1999/02/22-rdf-syntax-ns#
dcq http://www.purl.org/dc/qualifiers/1.0/
...全文
26 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hax 2002-09-21
  • 打赏
  • 举报
回复
你到这里来啦?不过我要劝你,这里没有人研究RDF的,国内都稀少,还是饮水思源最多。你不如回去看我给你的指出的那个standford的总结RDF在传统关系数据库里的网页。上面有一个连接到IBM的一篇讲e-business存储的论文,非常好。其中构造了从传统的横向表到类似RDF的3-arc的纵向表的双向转换,并且有性能分析。

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧