W3CHINA Blog首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:2
评论数量:0
留言数量:-1
访问次数:43121
建立时间:2004年12月16日





[语义网]使用RDF开发网络服务的经验
心得体会,  软件技术

nlany 发表于 2004/12/16 23:24:23

采用RDF(资源描述框架)可以用来帮助你的项目处理元数据。因为元数据是用来定义和描述其他数据的,所以利用元数据就可以推断有哪些方法可以用来处理被描述的数据,而不用关心数据本身的具体内容。 RDF::Core 是一个面向对象的Perl模块,可以用RDF的模型来创建、保存、查询元数据,还可以把数据用RDF/XML语法输出为XML文档。我把它用在一个处理URL重定向的软件项目里:s 在这个项目里我有一个需求是输出用户已经注册过的URL注册和重定向信息,但是我希望根据用户的喜好来选择输出格式。这样这些输出的数据就可以被支持某种特定格式的工具打开,可选的常用格式如 HTML、RDF/RSS、OPML等等。 于是,我首先用RDF语义模型对待输出数据做了描述,但是这就涉及到应该用什么词汇来描述,网上搜了一下,并没有现成的词汇合适描述URL重定向信息的, 我就只好自己规定了一套词汇,还好,W3C已经为制定词汇提供了RDFS词汇,例如定义一个 SymURL (Symbolic URL) 类: <rdfs:Class rdf:about="#SymURL"             rdfs:label="Symbolic URL"             rdfs:comment="A symbolic URL link item">    <rdfs:isDefinedBy rdf:resource=""/> </rdfs:Class> 将来只要提供这个词汇集文件的其他新版本,就可以修改元数据的含义,从而改变可以用来处理数据的方法。好了,有了词汇我们终于可以把原始数据用 RDF定义,并把它们保存到一个临时的RDF Store里,RDF::Core提供三种Store存储方式,我选择了直接保存在内存里,你还可以用 dbm文件 或 Postgres 数据库来保存。 现在,如果用户希望以 RDF/RSS 1.0 的格式来输出数据,我就提供一个项目私有词汇和RDF/RSS 1.0 词汇的映射表,这个映射表本身是用来描述两个词汇集之间的关系的,所以我同样可以用RDF来定义,如要映射私有词汇 “SymURL” 为 RSS 的词汇 “item” : <rdf:Description rdf:about="#SymURL">    <mapto rdf:resource="&rss;item"/> </rdf:Description> 将来只要对这个映射表进行修改,就可以支持新的词汇,如 RDF/RSS 3.0 5.0 什么的,而不用去修改源程序。 接下来,程序员通过RDF::Core 提供的XML解析器来读取词汇映射表,通过编程按照映射表来给数据添加使用了新词汇的元数据。如果用 RDF::Core 提供的查询功能提取所有用新词汇描述的数据,我们就会得到了一个使用 RDF/RSS 1.0 词汇的数据集。但是,实际上,我还希望这些输出的数据将来还可以再输入回来,所以我如果把词汇映射表一并输出,那么我们的程序还可以把这些外来词汇转换为 私有词汇,以便选择合适的操作。 把RDF定义的数据用XML输出可以用RDF::Core,但是它的输出功能还不能做一些细致的定制,而RDF/RSS 1.0为了照顾对0.91版的兼容性,对格式的要求有比较苛刻的地方,于是我使用 XML::Writer 重新写了一个RDF Serializer,让它可以使用其他RDF/XML的输出格式:比如支持 rdf:type 属性和匿名属性的简写方式,支持 rdf:li 属性,支持使用默认xml名字空间等。 这些方法在普通的RSS 输出程序中都是罕见的,因为大多数程序都是直接按照 RSS 标准人工确定使用什么词汇、如何转换数据等,而不是依靠RDF/RDFS来定义私有数据的含义,对于小的项目,这是可以接受的,但是大的项目,如果不把数 据的定义和处理逻辑分开,那么维护和升级将必须通过修改源程序来完成,而且必须认真检查每一个处理环节。 如果像 css和xhtml把显示逻辑和结构控制逻辑那样清晰划分网页设计的工作,我们也清楚地分开 “数据的定义” 和 “数据的处理”,当数据定义发生变化的时候,只需要修改 “词汇集”或者 “词汇映射表”就可了,而不用去修改程序;同样当我们希望改变或增加数据的处理方式的时候,数据的定义没有改变,依赖这些定义的旧的和第三方程序仍然可以 同时运行,如果这些程序是花数百万投资开发的话,那意义就更明显了。 OWL 比 RDF 多了一个逻辑层,也增加了这类工具的开发难度和效率开销,但是 RDF 的优势足以让我们期待像 OWL 这样的语义Web技术可以把数据的处理提高到一个更加智能化和人性化的高度。


阅读全文(2391) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.135 second(s), page refreshed 144783399 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号