`
film
  • 浏览: 231497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jena中关于本体操作的几个代码。(自己看的笔记)

 
阅读更多
package com.moms.service;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Iterator;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.hp.hpl.jena.db.DBConnection;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import com.hp.hpl.jena.reasoner.Reasoner;
import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;
import com.hp.hpl.jena.reasoner.rulesys.Rule;
import com.hp.hpl.jena.util.FileManager;
import com.moms.util.db;

public class monto {
	InputStream in =null ;
	db test=new db();
	DBConnection cn = null;
	OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
	public void show(String modelname) throws Exception {
		cn=db.mconn();
		ModelMaker maker= ModelFactory.createModelRDBMaker(cn);
		Model r = maker.openModel(modelname);
		HttpServletResponse response = ServletActionContext.getResponse(); 
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		PrintWriter out= response.getWriter();
		out.print("<link rel='stylesheet' type='text/css' href='/MOMS/css/default.css' />");
		out.print("<textarea name='c' style='width:100%;height:90%;padding:0;font:20px;border:0 none;'>");
		r.write(out);
		out.print("</textarea>");

	}
	public boolean read(String filename) throws Exception {
		HttpServletResponse response = ServletActionContext.getResponse(); 
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		PrintWriter out= response.getWriter();		
		in = FileManager.get().open(filename);
		if(null != in) {
			out.print("<link rel='stylesheet' type='text/css' href='/MOMS/css/default.css' />");
			out.print("<textarea name='c' style='width:100%;height:90%;padding:0;font:20px;border:0 none;'>");
			try
			{
				in = new FileInputStream( filename );
				m.read( in, null);
				m.write(out);
				Iterator<OntClass> iter = m.listHierarchyRootClasses();
				while (iter.hasNext()){
					OntClass oc = iter.next();
					out.println("类:" + oc.toString());
					if(oc.hasSubClass()){
						Iterator<OntClass> siter = oc.listSubClasses(true);
						while(siter.hasNext()){
							OntClass sub =  siter.next();
							out.println("子类:"+sub.toString());
						}
					}
				}
			}
			catch(Exception e){
				System.err.println(e.toString());
			}
			out.print("</textarea>");
			//System.out.println("read file ok!");
			return true;
		}
		else
			return false;
	}
	public void listmodel() {
		//FileManager.get().
	}
	public void savedb(String filename, String modelname) {
		try {
		cn=db.mconn();
		ModelMaker maker= ModelFactory.createModelRDBMaker(cn);
		Model defModel = maker.createModel(modelname);
		in = new FileInputStream( filename );
		defModel.read(in,null);
		//defModel.write(System.out);
		db.mclose();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	public void delmodel(String modelname) {
		try {
		cn=db.mconn();
		ModelMaker maker= ModelFactory.createModelRDBMaker(cn);
		Model r = maker.openModel(modelname);
		r.write(System.out);
		maker.removeModel(modelname);//删除
		}
		catch (Exception e){
			e.printStackTrace();
		}
	}
	
	/*使用sparql对本体进行查询*/
    /*查询语句
    String queryString = "PREFIX Expert:<http://www.owl-ontologies.com/Expert.owl#> " +
    "SELECT ?expert ?subject " +
    "WHERE {?expert Expert:familiar_with ?subject} ";
	queryString = "Select ?s ?p ?o where {?s ?p ?o}"
	*/
	public void searchOnto(String modelname,String queryString)throws Exception {
		cn=db.mconn();
		ModelMaker maker= ModelFactory.createModelRDBMaker(cn);
		Model model=maker.getModel(modelname);
		HttpServletResponse response = ServletActionContext.getResponse(); 
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");		
		
		PrintWriter pw= response.getWriter();	
		pw.print("<link rel='stylesheet' type='text/css' href='/MOMS/css/default.css' />");
		pw.print("<textarea name='c' style='width:100%;height:90%;padding:0;font:20px;border:0 none;'>");
		
		Query query = QueryFactory.create(queryString);
		QueryExecution qe = QueryExecutionFactory.create(query, model);
		ResultSet results = qe.execSelect();
		/*打印结果*/
	    //ResultSetFormatter.outputAsJSON(out, results);//(Stystem.out, results, query);
		//ResultSetFormatter.outputAsXML(out, results);
		String strout = ResultSetFormatter.asText(results);
		pw.print(strout);
	    qe.close();
	    pw.print("</textarea>");
	    pw.close();
	}
	
	/*本体推理*/
	/*设置规则
    String rule = "[rule1:(?x http://www.owl-ontologies.com/Expert.owl#research ?y) " +
        "(?y http://www.owl-ontologies.com/Expert.owl#associate ?z) " +
        "->(?x http://www.owl-ontologies.com/Expert.owl#familiar_with ?z)]";
    */
	public void reasonOnto(String modelname,String rule) throws Exception {
		cn=db.mconn();
		ModelMaker maker= ModelFactory.createModelRDBMaker(cn);
		Model model=maker.getModel(modelname);
		HttpServletResponse response = ServletActionContext.getResponse(); 
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		OutputStream out=response.getOutputStream();
	     /*创建推理机*/
	     Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rule));
	     InfModel inf = ModelFactory.createInfModel(reasoner, model);
	     String queryString = "PREFIX Expert:<http://www.owl-ontologies.com/Expert.owl#> " +
	     "SELECT ?expert ?subject " +
	     "WHERE {?expert Expert:familiar_with ?subject} ";
	     Query query = QueryFactory.create(queryString);
	     QueryExecution qe = QueryExecutionFactory.create(query, inf);
	     ResultSet results = qe.execSelect();
	     /*打印结果*/
	     ResultSetFormatter.outputAsJSON(out, results);//(Stystem.out, results, query);
	     qe.close();
	}
}


front action:

package com.moms.action.front;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;

import com.moms.service.monto;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class manageonto  extends ActionSupport {
	@Override
	public String execute() throws Exception {
		return Action.SUCCESS;		
	}
	public void listonto() throws Exception {
		HttpServletResponse response = ServletActionContext.getResponse();
		HttpServletRequest request = ServletActionContext.getRequest();
		int page =Integer.parseInt(request.getParameter("page"));
		int row = Integer.parseInt(request.getParameter("rows"));//接受参数page和rows

		response.setContentType("text/javascript;charset=UTF-8");
		PrintWriter pw = response.getWriter();   
		pw.print("{\"total\":2,\"rows\":[{\"id\":\"01\",\"modename\":\"mongo\",\"publisher\":\"张三\"},{\"id\":\"02\",\"modename\":\"person\",\"publisher\":\"张三\"}]}");
	}
	public void showonto() throws Exception {
		monto m= new monto();
		m.show("person");//模型名称
		//return Action.SUCCESS;
	}
	public void seachonto() throws Exception {
		String queryString="Select ?主 ?谓 ?宾 where {?主  ?谓 ?宾}";
		String modelname="person";
		monto m= new monto();
		m.searchOnto(modelname, queryString);
		//return Action.SUCCESS;
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Jena对本体操作综合笔记

    - **OntModel**:核心接口,提供对本体数据的全面操作,包括导入子模型、获取本体信息、操作本体属性和数据导出等。 - **ModelFactory**:静态类,提供创建不同类型的模型(包括本体模型)的工厂方法,是模型创建的...

    jena操作本体的小例子

    ### Jena操作本体的小例子 #### 关系搜索在互联网中的应用及意义 关系搜索(Relationship Search)作为一种基于互联网海量信息下的人为中心的信息聚合技术,它对于名人关注、人际关系探索等方面具有重要的作用与...

    基于Jena的本体推理示例

    在这个“基于Jena的本体推理示例”中,我们将深入探讨如何使用Jena库进行本体推理,并通过SPARQL查询语言来操作本体。 首先,我们需要了解Jena的基本用法。Jena提供了一系列API,使得开发者能够轻松地创建、加载和...

    使用Jena将本体存入MySQL

    Jena是一个基于Java的本体处理框架,它提供了将本体存入关系数据库的接口,支持多种数据库管理系统,包括MySQL、HSQLDB、PostgreSQ、Oracle和Microsoft SQL Server等。下面我们将详细介绍使用Jena将本体存入MySQL的...

    Jena本体推理实例

    在"expert"子目录中,可能包含了一些示例代码或教程,展示了如何使用Jena进行本体推理的具体操作。这些示例可能会演示如何加载本体,如何定义和应用规则,以及如何执行SPARQL查询来获取推理后的信息。 总结来说,...

    Jena中文教程-本体API

    jena的中文教程,适合不想去官网看原版教程的人。适合新手入门学习jena的基本操作。jena可以解析本体,可以将建模工具和java联系起来

    Jena本体推理详细实例.zip

    在IT领域,尤其是在语义网和知识图谱的开发中,Apache Jena是一个非常重要的工具。Jena是一个开源Java框架,专门设计用于处理RDF(Resource Description Framework)、RDFS(RDF Schema)以及OWL(Web Ontology ...

    Jena+中文教程本体API

    熟练掌握Jena API需要对整个框架有深入理解,包括如何创建和操作资源,以及如何利用其丰富的迭代器来查询和操作本体信息。随着对Jena的熟悉,开发者能够更高效地构建语义网应用程序,实现本体在软件系统中的智能应用...

    Jena对本体的处理

    数据仓库课程上的报告,主要是关于本体的集成,使用到jena

    jena本体的一个小程序

    在这个特定的“jena本体的一个小程序”中,我们推测它可能使用了Jena的Model API来创建和操作本体模型,通过SPARQL查询语言来检索和分析数据。 **程序中的关键元素** 1. **SPARQL查询**: `jena_eclipse_sparql.ppt...

    基于Jena学习笔记,新手使用更方便

    在开始学习Jena之前,确保你对以下几个基础概念有所了解: - **XML**:可扩展标记语言,用于数据交换和存储。 - **RDF**:一种用于表示网络数据的模型,基于XML,用于描述资源和它们之间的关系。 - **OWL**:一种更...

    Jena_中文教程_本体API.pdf

    - **在本体中引入其他本体**:Jena支持通过`import`机制引入其他本体,这对于构建大型复杂的本体网络非常有用。 - **使用推理**:Jena内置了推理引擎,能够自动推导出本体中的隐含知识,这对于提高数据的一致性和...

    基于Jena的本体构建方法研究.pdf

    通过使用Jena平台提供的工具和技术,成功地构建了一个完整的本体,并验证了其在实际应用中的可行性和有效性。 #### 结论 本文提出了一种基于Jena的本体构建方法,通过五个步骤详细阐述了如何利用Jena平台有效地构建...

    Jena本体操纵类(1)——本体文件读取

    Jena提供了丰富的API,使得开发者能够轻松地构建和操作本体模型。本体是描述概念、实体及其关系的一种形式化方式,常用于知识表示和推理。在"Jena本体操纵类(1)——本体文件读取"这个主题中,我们将深入探讨如何使用...

    jena 解析 .owl 文件

    在IT领域,OWL(Web Ontology Language)是一种...总的来说,Jena为处理OWL文件提供了一个强大的工具集,使得开发者能够轻松地解析和操作本体数据,这对于构建智能系统、知识图谱以及语义Web应用等领域具有重要的意义。

    Jena中文教程,讲述jena应用

    总之,Jena是开发语义网应用的强大工具,它使开发者能够轻松地在程序中使用和操作本体模型。无论是处理RDF、RDFS还是OWL,Jena都能提供必要的接口和功能。通过深入学习和实践,开发者可以构建出复杂的语义网应用,...

Global site tag (gtag.js) - Google Analytics