语义网系列四:Jena实现语义数据操作

Posted on 2011-08-23 14:13  语义网博客  阅读(687)  评论(1)    收藏  举报

建立语义网开发环境

.编译及执行工具: JDK 1.6

.代码编辑工具:Eclipse 3.4

.语义网开源框架: Jena 下载地址:http://jena.sourceforge.net/

.语义网推理机 pellet 下载地址:http://clarkparsia.com/pellet/

 

Jena框架介绍

是使用java编写的一种广泛使用的语义web框架。该框架提供了sparql接口、rdfowl接口,已经对推理的支持。此外、该框架还提供了多种存储机制和推理机制,而且也允许集成定制的机制。

 

package com.biview.jena.spaqrl;

 

import java.io.InputStream;

import com.hp.hpl.jena.ontology.Individual;

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.rdf.model.Model;

import com.hp.hpl.jena.rdf.model.ModelFactory;

import com.hp.hpl.jena.rdf.model.Property;

import com.hp.hpl.jena.rdf.model.Statement;

import com.hp.hpl.jena.rdf.model.StmtIterator;

import com.hp.hpl.jena.util.FileManager;

 

/**

* Jena框架数据Model装载

* @author Stephen

http:// www.biview.cn

*/

public final class JenaModel

{

OntModel defaultModel,tempModel ;

       /**

        * 创建本体Model

        * @param spec

        * @return

        */

public OntModel createOntologyModel( OntModelSpec spec , String filePath)

             {

                    defaultModel = ModelFactory.createOntologyModel(spec);

                    defaultModel.read(getStreambyFile(filePath),null);

                    return defaultModel;

             }        

/**

* 获取本地owl文件流

* @param filePath

* @return

*/

private InputStream getStreambyFile( String filePath )

{

     InputStream inFoafInstance = FileManager.get().open(filePath);

     return inFoafInstance ;

}

/**

* 循环输出Model

* @param model

*/

private void outPut( Model model )

{

StmtIterator stmtIterator=        model.listStatements();

Statement statement = null ;

while( stmtIterator.hasNext() )

{

statement = stmtIterator.nextStatement();

System.out.println(statement.getSubject()+"---"+statement.getPredicate()+"---"+statement.getObject()); //获取断言主语

}

}

/**

* 获取本体Model详细内容

* @param model

*/

public void getModelDetails( OntModelSpec spec ,String filePath )

{

outPut(createOntologyModel(spec, filePath));

}        

 

/**

* 新增一个实例

* @param spec

* @param filePath

* @param defaultNameSpace

* @param className

* @param s

* @param p

* @param o

*/

public void addIndividual(OntModelSpec spec ,String filePath, String defaultNameSpace,String className, String s, String p , Object o)

{

tempModel = createOntologyModel(spec, filePath);

OntClass ontClass = tempModel.createClass(defaultNameSpace+className);

    Individual individual= ontClass.createIndividual(defaultNameSpace+s);

    Property property = tempModel.createProperty(defaultNameSpace, p);

    individual.addLiteral(property,o);

    outPut(tempModel);

}        

}

 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3