使用Oracle玩SemanticWeb技术[1]
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
Or, take a look at Archives and Categories
蒋兄真是淡泊名利啊 闪光言行评选 网络投票都不见博客上拉下票 佩服! 我师姐倒是为你拉了不少票啊 呵呵