建立语义网开发环境
.编译及执行工具: JDK 1.6
.代码编辑工具:Eclipse 3.4
.语义网开源框架: Jena 下载地址:http://jena.sourceforge.net/
.语义网推理机 pellet 下载地址:http://clarkparsia.com/pellet/
Jena框架介绍
是使用java编写的一种广泛使用的语义web框架。该框架提供了sparql接口、rdf和owl接口,已经对推理的支持。此外、该框架还提供了多种存储机制和推理机制,而且也允许集成定制的机制。
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
*/
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);
}
}
浙公网安备 33010602011771号