OWL Lite是表达能力最弱的子语言。它是OWL DL的一个子集,但是通过降低OWL DL中的公理约束,保证了迅速高效的推理。它支持基数约束,但基数值只能为0或l。因为OWL Lite表达能力较弱,为其开发支持工具要比其他两个子语言容易一些。OWL Lite用于提供给那些仅需要一个分类层次和简单约束的用户[6,7]。
OWL DL(Description Logic,描述逻辑)将可判定推理能力和较强表达能力作为首要目标,而忽略了对RDFS的兼容性。OWL DL包括了OWL语言的所有语言成分,但使用时必须符合一定的约束,受到一定的限制。OWL DL提供了描述逻辑的推理功能,描述逻辑是OWL的形式化基础。
OWL Full包含OWL的全部语言成分并取消了OWL DL中的限制,它将RDFS扩展为一个完备的本体语言,支持那些不需要可计算性保证(no computational guarantees)但需要最强表达能力和完全自由的RDFS用户[6]。在OWL Full中,一个类可以看成是个体的集合,也可以看成是一个个体。由于OWL Full取消了基数限制中对可传递性质的约束,因此不能保证可判定推理。
OWL是一个非冗余的蛋白质序列数据库,是由Leeds大学和Warrington的Daresbury实验室合作开发的(Bleasby等,1994)。OWL数据库由四个主要的一级序列数据库复合而成,即SWISS-PROT、PIR、GenBank(由其编码序列翻译而成的氨基酸序列)和NRL-3D。在构建OWL数据库的过程中,考虑到每个数据库所包含序列信息的情况,赋予它们不同的优先级,SWISS-PROT数据库的优先级最高。在对数据的处理上,不仅删除与某一序列完全相同的序列条目,也剔除与某一序列相差个别氨基酸残基的序列条目。因此,OWL数据库是一个具有较小冗余度的蛋白质序列数据库。尽管如此,与NRDB相同,OWL数据库也会有一些错误,即在该数据库中仍然包括来自一次数据库的错误序列,例如由GenBank中错误序列翻译而得的错误的氨基酸序列。此外,OWL数据库更新较慢。英国的EMBnet国家节点上提供有针对于OWL的BLAST搜索服务。
还可以指owl: object windows library
OWL(object windows library):这是一个Application Framework结构的类库,附含在Borland C++中.同MFC类似.
安装好必要的软件并配置好开发环境
Eclipse
MySQL Server 5.5-win32
jena2.6.4
protege4.3
mysql-connector-java-5.1.35(MySQL的JDBC)
1. 利用MySQL创建一个数据库:create database military_ontology
2. 打开Eclipse,新建一个Java工程,起名为military_ontology。(File-New-Java Project,输入名字military_ontology,点击next)
3. 新建工程的同时,分别导入Jena包和MySQL的JDBC。(点击Libraries-点击Add External JARs,分别加入JDBC和Jena中全部.jar文件,C:\Program Files\MySQL\MySQL Connector J和G:\Jena\lib目录中,点Finish)
4. 在工程military_ontology\src\目录下新建一个Java文件(New-Class),名字为military_ontology.java;
5. 在military_ontology.java中开始编写以下代码:
package military_ontology
import java.io.*//导入IO包的所有类
import java.sql.SQLException//导入SQL有关异常处理包
import com.hp.hpl.jena.db.*//导入jena链接数据库的包
import com.hp.hpl.jena.rdf.model.*//导入jena有关模型的包
import com.hp.hpl.jena.ontology.OntModel//导入OntModel包
import com.hp.hpl.jena.ontology.OntModelSpec//导入OntModelSpec包
Model defModel = null
if(connection.containsModel("militaryDB"))//判断名为militaryDB的模型是否已经存在数据
{
defModel = maker.openModel("militaryDB",true)//数据存在则打开此模型
System.out.println("打开已存在的模型")
}
else
{
defModel = maker.createModel("militaryDB")//数据不存在则创建此模型
System.out.println("创建一个新模型")
}
OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM)
OntModel DBModel = ModelFactory.createOntologyModel(spec, defModel)
//将临时模型转换成本体模型(OWL格式),其中spec参数表示该模型是在内存中存在的。
FileInputStream read = null//定义并初始化文件输入流变量read
try
{
File file = new File("g:/毕业设计/软件/本体实例/Ontology1428926241032/Ontology1428926241032.owl")
read = new FileInputStream(file)//读入OWL本体文件
}
catch (FileNotFoundException e)//抓取读入文件异常
{
e.printStackTrace()
System.out.println("未找到要存储的本体文件,请检查文件地址及名称")
}
System.out.println("已将本体文件转换为字节流文件。")
InputStreamReader in = null//定义并初始化输入流转换变量in
try
{
in = new InputStreamReader((FileInputStream)read, "UTF-8")//将字节流文件转换为UTF-8编码
System.out.println("已将字节流文件转换为UTF-8编码。")
}
catch (UnsupportedEncodingException e)//抓取转换异常
{
e.printStackTrace()
System.out.println("不支持上述字符集。")
}
defModel.read(in,null)//将流文件读入数据库模型
defModel.commit()//将模型保存到数据库中
System.out.println("数据转换执行完毕,已将本体文件存入数据库。")
try
{
in.close()
System.out.println("已将字节流文件关闭。")
}
catch (IOException e)//抓取输入输出异常
{
e.printStackTrace()
System.out.println("无法关闭字节流文件。")
}
try
{
connection.close()//关闭连接
System.out.println("已将连接关闭。")
}
catch (SQLException e)
{
e.printStackTrace()
System.out.println("连接无法关闭。")
}
}
catch (RDFRDBException e)
{
System.out.println("出现异常")
}
System.out.println("已将本体文件持久化到数据库中,无异常")
}
}
执行程序之后,本体被存入MySQL数据库中。数据库会生成以下几张表:
jena_g1t0_reif 存储经过处理的本体数据
jena_g1t1_stmt 存储了本体的数据信息
jena_graph 存储每一个用户图的名字和唯一标志符
jena_long_lit 存储陈述表中不便于直接存储的长字符创常量
jena_long_uri 存储陈述表中不便于直接存储的长资源URI
jena_prefix 存储URI的前缀。前缀只存储一次,节省空间
jena_sys_stmt 存储了本体的元数据信息
主要数据存在两个表中。
1) military_ontology.jena_g1t1_stmt 存储了本体的数据信息
2) military_ontology.jena_sys_stmt 存储了本体的元数据信息
将ShowRecord.owl文件存储到MySQL数据库中,数据库叫Jena,在Eclipse中创建工程OperaOntology,代码如下:import Java.io.*
import java.sql.SQLException
import com.hp.hpl.jena.db.*
import com.hp.hpl.jena.ontology.OntClass
import com.hp.hpl.jena.rdf.model.*
public class OperaOntology {
public static final String strDriver = "com.mysql.jdbc.Driver"
public static final String strURL = "jdbc:mysql://localhost:3306/jena"// localhost的后面要直接写冒号,再写3306;
public static final String strUser = "root"
public static final String strPassword = "root"
public static final String strDB = "MySQL"
public static void main(String[] args){
try {
DBConnection connection = new DBConnection(strURL, strUser, strPassword, strDB)
System.out.println(connection)
// 创建连接时,第四个参数需要指定所用的数据库类型;也就是说strDB的值应该是“MySQL”
try {
Class.forName("com.mysql.jdbc.Driver")
System.out.println("驱动程序已经安装。")
} catch (ClassNotFoundException e){
System.out.println("ClassNotFoundException, Driver is not available")
}
System.out.println("数据库连接成功。")
// 从此处开始读入一个OWL文件并且存储到数据库中;
ModelMaker maker = ModelFactory.createModelRDBMaker(connection)// 使用数据库连接参数创建一个模型制造器
Model defModel = maker.createModel("ShowRecord")// 创建一个默认模型,命名为CostumeModel,因为我要存入的OWL文件名是Costume
FileInputStream read = null
try{
File file = new File("e:/ontologies/ShowRecord.owl")
read = new FileInputStream(file)
}catch (FileNotFoundException e){
e.printStackTrace()
System.out.println("未找到要存储的本体文件,请检查文件地址及名称")
}
System.out.println("已将本体文件转换为字节流文件。")
InputStreamReader in = null
try {
in = new InputStreamReader((FileInputStream)read, "UTF-8")
} catch (UnsupportedEncodingException e) {
e.printStackTrace()
System.out.println("不支持上述字符集。")
}
System.out.println("已将字节流文件转换为UTF-8编码。")
defModel.read(in,null)
try {
in.close()
} catch (IOException e){
e.printStackTrace()
System.out.println("无法关闭字节流文件。")
}
System.out.println("已将字节流文件关闭。")
defModel.commit()
System.out.println("数据转换执行完毕,已将本体文件存入数据库。")
try{
connection.close()
} catch (SQLException e){
e.printStackTrace()
System.out.println("文件无法关闭。")
}
} catch (RDFRDBException e){
e.printStackTrace()
System.out.println("出现异常")
}
System.out.println("已将本体文件持久化到数据库中")
}
}
以上步骤成功完成以后,我登录到MySQL的界面查询工具查看Jena数据库的表,点击“Catalogs“
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)