使用Oracle玩SemanticWeb技术[1]

Posted by 蒋波涛 26 March,2011 Views (2)Comment

Oracle的东西真是好,除了spatial模块,连semantic web的RDF、RDFS和OWL的存储、查询和推理都支持。下面简单说说在安装了oracle11gR2之后,该如何玩semantic web的一个流程:

1.安装Oracle 11g R2后,通过sql plus,使用SYS以SYSDBA权限登录,执行脚本生成一个语义网络

@%ORACLE_HOME%\md\admin\catsem.sql

执行此脚本后,登录Oracle sql developer工具,以SYS登录,在其他用户中寻找到MDSYS,查看其中的RDF_PARAMETER,会出现MDSYS SEM_VERSION 112 VALID四个值,表示Oracle此时具备了semantic web功能。

2.创建一个表空间RDF_TABLESPACE

3.在sql plus中执行

EXECUTE SEM_APIS.CREATE_SEM_NETWORK('RDF_TABLESPACE');

以此生成一个语义数据网络,该过程需要以SYS来执行。

4.新建一个用户semantic,其默认表空间为RDF_TABLESPACE,具有connect和resource权限,能够对该表空间进行读写操作;

5.新建一张数据表

CREATE TABLE articles_rdf_data(id NUMBER,triple SDO_RDF_TRIPLE_S);

注意三元组triple是SDO_RDF_TRIPLE_S类型。

6.基于改表生成一个模型

EXECUTE SEM_APIS.CREATE_SEM_MODEL('articles', 'articles_rdf_data','triple');

7.为了提高三元组的查询效率,我们可以新建三个索引,分别指向三元组的subject property object三个结构

CREATE INDEX articles_sub_idx ON articles_rdf_data (triple.GET_SUBJECT());
CREATE INDEX articles_prop_idx ON articles_rdf_data (triple.GET_PROPERTY());
CREATE INDEX articles_obj_idx ON articles_rdf_data (to_char(triple.GET_OBJECT()));

至此,一个支持triple三元组类型语义数据存储的数据表已经建立起来了,接下来就是向表中添加数据。

Related Items

Categories : 语义网与知识库 Tags :
Comments
2011-3-28 22:48:14

蒋兄真是淡泊名利啊 闪光言行评选 网络投票都不见博客上拉下票 佩服! 我师姐倒是为你拉了不少票啊 呵呵

Posted by adam Gravatar Icon

2011-3-30 17:16:20

咳,我一看那个投票的曲线,明显不符合正态分布,就知道肯定有刷票在捣鬼,没兴趣了。

Posted by 蒋波涛 Gravatar Icon

Leave a comment

Or, take a look at Archives and Categories

目录

存档