Java 语义网编程系列四: Jena实现语义数据操作
建立语义网开发环境
.编译及执行工具: JDK 1.6
.代码编辑工具:Eclipse 3.4
.语义网开源框架: Jena 下载地址:http://jena.sourceforge.net/
.语义网推理机 pellet 下载地址:http://clarkparsia.com/pellet/
Jena框架介绍
是使用java编写的一种广泛使用的语义web框架。该框架提供了sparql接口、rdf和owl接口,已经对推理的支持。此外、该框架还提供了多种存储机制和推理机制,而且也允许集成定制的机制。

1 package com.biview.jena.spaqrl;
2
3
4
5 import java.io.InputStream;
6
7 import com.hp.hpl.jena.ontology.Individual;
8
9 import com.hp.hpl.jena.ontology.OntClass;
10
11 import com.hp.hpl.jena.ontology.OntModel;
12
13 import com.hp.hpl.jena.ontology.OntModelSpec;
14
15 import com.hp.hpl.jena.rdf.model.Model;
16
17 import com.hp.hpl.jena.rdf.model.ModelFactory;
18
19 import com.hp.hpl.jena.rdf.model.Property;
20
21 import com.hp.hpl.jena.rdf.model.Statement;
22
23 import com.hp.hpl.jena.rdf.model.StmtIterator;
24
25 import com.hp.hpl.jena.util.FileManager;
26
27
28
29 /**
30
31 * Jena框架数据Model装载
32
33 * @author Stephen
34
35 * http:// www.biview.cn
36
37 */
38
39 public final class JenaModel
40
41 {
42
43 OntModel defaultModel,tempModel ;
44
45 /**
46
47 * 创建本体Model
48
49 * @param spec
50
51 * @return
52
53 */
54
55 public OntModel createOntologyModel( OntModelSpec spec , String filePath)
56
57 {
58
59 defaultModel = ModelFactory.createOntologyModel(spec);
60
61 defaultModel.read(getStreambyFile(filePath),null);
62
63 return defaultModel;
64
65 }
66
67 /**
68
69 * 获取本地owl文件流
70
71 * @param filePath
72
73 * @return
74
75 */
76
77 private InputStream getStreambyFile( String filePath )
78
79 {
80
81 InputStream inFoafInstance = FileManager.get().open(filePath);
82
83 return inFoafInstance ;
84
85 }
86
87 /**
88
89 * 循环输出Model
90
91 * @param model
92
93 */
94
95 private void outPut( Model model )
96
97 {
98
99 StmtIterator stmtIterator= model.listStatements();
100
101 Statement statement = null ;
102
103 while( stmtIterator.hasNext() )
104
105 {
106
107 statement = stmtIterator.nextStatement();
108
109 System.out.println(statement.getSubject()+"---"+statement.getPredicate()+"---"+statement.getObject()); //获取断言主语
110
111 }
112
113 }
114
115 /**
116
117 * 获取本体Model详细内容
118
119 * @param model
120
121 */
122
123 public void getModelDetails( OntModelSpec spec ,String filePath )
124
125 {
126
127 outPut(createOntologyModel(spec, filePath));
128
129 }
130
131
132
133 /**
134
135 * 新增一个实例
136
137 * @param spec
138
139 * @param filePath
140
141 * @param defaultNameSpace
142
143 * @param className
144
145 * @param s
146
147 * @param p
148
149 * @param o
150
151 */
152
153 public void addIndividual(OntModelSpec spec ,String filePath, String defaultNameSpace,String className, String s, String p , Object o)
154
155 {
156
157 tempModel = createOntologyModel(spec, filePath);
158
159 OntClass ontClass = tempModel.createClass(defaultNameSpace+className);
160
161 Individual individual= ontClass.createIndividual(defaultNameSpace+s);
162
163 Property property = tempModel.createProperty(defaultNameSpace, p);
164
165 individual.addLiteral(property,o);
166
167 outPut(tempModel);
168
169 }
170
171 }
以上内容有任何错误或不准确的地方请大家指正,不喜勿喷!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。
分类:
Java 语义网编程系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架