引自http://www.cnblogs.com/armymen1980/archive/2008/10/22/1316699.html
实现了OWL本体到MySQL的存储和读取,首先应该配置好环境,在项目中添加jena的相关包,值得注意的是MySQL的驱动和版本要一致。
我是用protege创建OWL本体,然后再从OWL文件中读取,存入MySQL数据库,注意在保存OWL本体的时候最好项目另存为的
LANGUAGE选择RDF/XML,最好用UTF-8编码,这样读取出错的机会少一些,图片在附件中。
下面是操作的java代码:
/* 连接数据库 */
public static IDBConnection connectDB(String DB_URL, String DB_USER,
String DB_PASSWD, String DB_NAME) {
return new DBConnection(DB_URL, DB_USER, DB_PASSWD, DB_NAME);
}
/* 从文件读取本体并将其存入数据库 */
public static OntModel createDBModelFromFile(IDBConnection con, String name,
String filePath) {
ModelMaker maker = ModelFactory.createModelRDBMaker(con);
Model base = maker.createModel(name);
OntModel newmodel = ModelFactory.createOntologyModel(
getModelSpec(maker), base);
newmodel.read(filePath);
return newmodel;
}
/* 从数据库中得到已存入本体 */
public static OntModel getModelFromDB(IDBConnection con, String name) {
ModelMaker maker = ModelFactory.createModelRDBMaker(con);
Model base = maker.getModel(name);
OntModel newmodel = ModelFactory.createOntologyModel(
getModelSpec(maker), base);
return newmodel;
}
public static OntModelSpec getModelSpec(ModelMaker maker) {
OntModelSpec spec = new OntModelSpec(OntModelSpec.OWL_MEM);
spec.setImportModelMaker(maker);
return spec;
}
下面是测试的代码,先从文件中读取,让后存入数据库中,再从数据库中读出。
public static void test() {
String DB_URL = "jdbc:mysql://localhost/expert";
String DB_USER = "root";
String DB_PASSWD = "root";
String DB = "MySQL";
String DB_DRIVER = "com.mysql.jdbc.Driver";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String filePath = "file:C://expert//Expert.rdf-xml.owl";
IDBConnection con = JaneUtils.connectDB(DB_URL,DB_USER, DB_PASSWD, DB);
System.out.println(con);
JaneUtils.createDBModelFromFile(con, "expert",filePath);
OntModel model = JaneUtils.getModelFromDB(con, "expert");
JaneUtils.SimpleReadOntology(model);
}
/* 简单读取本体中的各个class */
public static void SimpleReadOntology(OntModel model) {
for (Iterator i = model.listClasses(); i.hasNext();) {
OntClass c = (OntClass) i.next();
System.out.println(c.getLocalName());
}
}
此主题相关图片如下:
分享到:
相关推荐
使用Jena将本体存入MySQL Jena是一个基于Java的本体处理框架,它提供了将本体存入关系数据库的接口,支持多种数据库管理系统,包括MySQL、HSQLDB、PostgreSQ、Oracle和Microsoft SQL Server等。下面我们将详细介绍...
在这里,我们使用Jena的DBConnection类来连接到MySQL数据库,并使用ModelMaker类来读取OWL本体文件并将其存储到数据库中。 在Java程序中,我们需要导入必要的包,包括IO包、SQL异常处理包、Jena链接数据库的包、...
通过本文的介绍,我们可以了解到使用Jena API查询OWL本体的基本流程和关键步骤。对于想要深入了解语义网技术和本体论的开发者来说,掌握这些基础知识是非常有帮助的。在未来的工作中,我们还可以进一步探索Jena API...
本篇文章将深入探讨如何使用Jena库解析.OWL文件,以及相关的技术细节。 首先,我们需要了解Jena如何读取和解析.OWL文件。Jena提供了`OntModelSpec`类,它可以定义一个本体模型的规范,其中包括了本体模型使用的推理...
这是一个jena api解析owl文件的简单案例。
综上所述,这个压缩包提供了使用Apache Jena 2.6.4版本实现OWL本体在MySQL中的持久化所需的所有组件。开发者可以利用这些库创建一个系统,将复杂的OWL知识模型存储在数据库中,以备后续的查询和推理任务。由于该版本...
JENA教程(包括生成RDF和写本体到MySQL中,很适合入门,很详细)JENA教程(包括生成RDF和写本体到MySQL中,很适合入门,很详细)JENA教程(包括生成RDF和写本体到MySQL中,很适合入门,很详细)JENA教程(包括生成RDF和写本体...
本体,应用程序则是使用Jena来做同样的工作,当然这些应用程序还是得由我 们来编写。其实Protege本身也是在Jena的基础上开发的,你看如果Protege 的console里报异常的话,多半会和Jena有关。最近出了一个Protege OWL...
3. **加载和保存本体**:使用`OWLModelManager`来管理本体,可以加载`.owl`或`.rdf`格式的文件,并通过`OWLOntologyStorageSource`保存到文件。 4. **查询和操作**:`OntModel`提供了丰富的API来查询本体信息,如...
一个用jena处理protege生成的owl文件的小例子,可以输出本体类,属性等等,可以借鉴学习一下
【摘要】:本文主要介绍了如何使用Jena API查询OWL本体,特别是在家族本体中的应用。文章首先阐述了本体的基本概念,强调了其在共享知识和语义理解中的重要性。接着,概述了OWL语言的发展和三个不同层次的子语言,...
本体是描述领域知识的一种形式化方式,而Jena是Apache软件基金会开发的一个Java框架,用于处理RDF、RDFS和OWL等语义网数据模型。在这个“基于Jena的本体推理示例”中,我们将深入探讨如何使用Jena库进行本体推理,并...
【标题】: 使用Jena API查询OWL家族本体 【描述】: 本文将详细介绍如何利用Jena API来查询OWL本体,特别是针对家族关系的本体数据进行操作。我们将探讨本体的基本概念,理解OWL语言的特点,以及Jena库在处理本体中...
【描述】: 本文将介绍如何使用Jena API查询OWL本体,特别是在家族本体中的应用,包括查询家庭成员关系如父亲、母亲、子女等。 【标签】: 大数据, cs 【正文】: 1. **本体与OWL简介** 本体,源于哲学,是研究世界...
本篇文章介绍了如何使用Jena API查询基于OWL的家族本体。通过理解本体的基本概念,以及OWL的不同语言层次,我们可以更好地构建和利用家族本体。Jena API为开发者提供了强大的工具,能够方便地进行本体查询和推理,...
Jena的性能和灵活性使其成为Java开发人员处理语义数据的理想选择,而Protege则为非程序员提供了可视化工具,使他们也能参与到本体构建和管理中来。 在实际应用中,Jena和OWLAPI的组合允许开发者实现以下功能: - *...
以下是一些使用Jena处理OWL本体的基本步骤: 1. **创建OntModel**: 使用`ModelFactory.createOntologyModel()`方法可以创建一个OntModel对象,这是专门处理本体的模型,继承自Model接口,增加了处理类和属性等本体...