以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 Semantic Web(语义Web)/描述逻辑/本体 』  (http://bbs.xml.org.cn/list.asp?boardid=2)
----  用progete源代码怎么把本体持久化到mysql数据库中?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=72718)


--  作者:hoho19840130
--  发布时间:3/6/2009 4:26:00 PM

--  用progete源代码怎么把本体持久化到mysql数据库中?

怎么用protege源代码持久化到mysql里。能否给个简单的例子。用jena我会。比如用jena我把123.owl文件保存到mysql,
                 ........
                  maker = ModelFactory.createModelRDBMaker(con);
                  Model base = maker.createModel("owl");
                 OntModel newmodel = ModelFactory.createOntologyModel(getModelSpec(maker), base);
                 newmodel.read(f://123.owl);
那我怎么用protege读数据库中的本体?


--  作者:lipeiqiang1997
--  发布时间:4/13/2009 10:58:00 AM

--  
这位朋友能不能把用jena将本体存入到数据库中的源代码分享一下,从网上找了一些代码都不能用,谢谢。
--  作者:yolanda8487
--  发布时间:4/14/2009 11:26:00 AM

--  
protege和jena的存储方式是不同的,我觉得应该不通用。我也曾经想用protege api来持久化本体到数据库,但是没找到方法。现在暂时的解决方法就是在protege里面持久化,用protege api在程序里面读取
--  作者:jpz6311whu
--  发布时间:4/16/2009 8:21:00 PM

--  
protege和jena的存储方式是不同的,用jena存的就用jena读,用protege存档话,就用protege读,两者无法直接沟通
--  作者:hoho19840130
--  发布时间:4/19/2009 3:37:00 PM

--  owl的持久化
OWL的持久化可以用jena或protege。
原来jena 的owl持久化已经忘了,可以看下
Jena2 Database Interface - How To Create Persistent Models
用protege也是比较简单的:http://protegewiki.stanford.edu/index.php/ConvertingToDatabaseProject
下面是我仿造写的方法:
读:
package com.demo.application;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.hp.hpl.jena.db.IDBConnection;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.util.FileUtils;

import edu.stanford.smi.protege.model.KnowledgeBase;
import edu.stanford.smi.protege.model.Project;
import edu.stanford.smi.protege.storage.database.DatabaseKnowledgeBaseFactory;
import edu.stanford.smi.protege.util.PropertyList;
import edu.stanford.smi.protege.util.URIUtilities;
import edu.stanford.smi.protegex.owl.ProtegeOWL;
import edu.stanford.smi.protegex.owl.database.CreateOWLDatabaseProjectPlugin;
import edu.stanford.smi.protegex.owl.database.OWLDatabaseKnowledgeBaseFactory;
import edu.stanford.smi.protegex.owl.database.OWLDatabaseModel;
import edu.stanford.smi.protegex.owl.jena.Jena;
import edu.stanford.smi.protegex.owl.jena.JenaOWLModel;
import edu.stanford.smi.protegex.owl.model.OWLModel;
import edu.stanford.smi.protegex.owl.model.OWLNamedClass;
import edu.stanford.smi.protegex.owl.model.query.QueryResults;
import edu.stanford.smi.protegex.owl.storage.KnowledgeBaseCopier;

public class OWLConnectDBreader {
 public static void main(String[] args) {
  String driver = "com.mysql.jdbc.Driver";
  String url = "jdbc:mysql://localhost/223";
  String table = "owltab1";
  String user = "root";
  String password = "root";
  //String uri = "file:f:/123.owl";

  // @SuppressWarnings("unchecked");

 try{ OWLDatabaseKnowledgeBaseFactory factory = new OWLDatabaseKnowledgeBaseFactory();
  Collection errors = new ArrayList();
  Project prj = Project.createNewProject(factory, errors);
  OWLDatabaseKnowledgeBaseFactory.setSources(prj.getSources(), driver,url, table, user, password);
  prj.createDomainKnowledgeBase(factory, errors, true);
  System.out.print("2323333333333333333333");
  OWLModel  owlmodel = (OWLModel) prj.getKnowledgeBase();
  } catch (Exception e) {

 

 }
}
}
写:package com.demo.application;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;

import com.hp.hpl.jena.db.IDBConnection;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.util.FileUtils;

import edu.stanford.smi.protege.model.KnowledgeBase;
import edu.stanford.smi.protege.model.Project;
import edu.stanford.smi.protege.storage.database.DatabaseKnowledgeBaseFactory;
import edu.stanford.smi.protege.util.Log;
import edu.stanford.smi.protege.util.MessageError;
import edu.stanford.smi.protege.util.PropertyList;
import edu.stanford.smi.protege.util.URIUtilities;
import edu.stanford.smi.protegex.owl.ProtegeOWL;
import edu.stanford.smi.protegex.owl.database.CreateOWLDatabaseProjectPlugin;
import edu.stanford.smi.protegex.owl.database.OWLDatabaseKnowledgeBaseFactory;
import edu.stanford.smi.protegex.owl.jena.JenaOWLModel;
import edu.stanford.smi.protegex.owl.model.OWLDatatypeProperty;
import edu.stanford.smi.protegex.owl.model.OWLModel;
import edu.stanford.smi.protegex.owl.model.OWLNamedClass;
import edu.stanford.smi.protegex.owl.model.OWLObjectProperty;
import edu.stanford.smi.protegex.owl.model.RDFIndividual;
import edu.stanford.smi.protegex.owl.storage.KnowledgeBaseCopier;

public class OWLConnectDBTest {
 public static void main(String[] args) {
  String driver = "com.mysql.jdbc.Driver";
  String url = "jdbc:mysql://localhost/protege";
  String table = "owltab";
  String user = "root";
  String password = "root";
  // String uri = "file:f:/123.owl";

  // @SuppressWarnings("unchecked");

  try {
   System.out.println("In Convert to Database Project");
   List errors = new ArrayList();
   //     
   File fin = new File("f:\\owl\\newService.owl");
   FileInputStream input = new FileInputStream(fin);
   // URL url=new URL();
   InputStreamReader in = null;
   in = new InputStreamReader(input, "utf-8");
   JenaOWLModel owlModel = ProtegeOWL.createJenaOWLModelFromReader(in);
   // JenaOWLModel owlModel = ProtegeOWL.createJenaOWLModel();
   // OWLNamedClass owlClass = owlModel.createOWLNamedClass("ccc");
   Project fileProject = owlModel.getProject();
   OWLDatabaseKnowledgeBaseFactory factory = new OWLDatabaseKnowledgeBaseFactory();
   PropertyList sources = PropertyList.create(fileProject
     .getInternalProjectKnowledgeBase());

   DatabaseKnowledgeBaseFactory.setSources(sources, driver, url,
     table, user, password);
   factory.saveKnowledgeBase(owlModel, sources, errors);
   System.out.println("ok");
   // displayErrors(errors); // forget this and it will be a mystery
  } catch (Exception e) {
  }
 }
先写到数据库中,再读。
本人已经学习progete API 2个月了,对一般的操作有一定的认识,现在自己在做个系统。自己觉得学习owl还是找对应的英文文档看。
jena的文档:看它自己的文档file:///F:/Jena-2.5.7/doc/documentation.html
protege的文档:http://protege.stanford.edu/plugins/owl/api/guide.html#Jena


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.988ms