jena->arq学习1--arq编程调用模式
2006-11-17 13:27
169 查看
hp牛人的代码怎一个棒字了得!研读收益颇多,总结一下编程调用模式流程:
[推荐下载:cvs -d:pserver:anonymous@jena.cvs.sourceforge.net:/cvsroot/jena login]
//1、创建模型[Model](rdf模型)
//无怪乎是用一堆三元组表示
Model model = createModel() ;
//2、创建查询[Query]
Query query = QueryFactory.make() ;
//2-1、设置查询类型 为select型
query.setQueryType(Query.QueryTypeSelect) ;
//3、创建模式[Pattern]
//3-1、创建元素组[ElementGroup](组中每一个元素都是一个三元组模式[ElementTriplePattern])
ElementGroup elg = new ElementGroup() ;
//3-2、创建变量(Node类型)
Node varTitle = Node.createVariable("title") ;
Node varX = Node.createVariable("x") ;
//3-3、创建三元组(基于变量和谓词(或者叫属性))
Triple t1 = new Triple(varX, DC.title.asNode(), varTitle) ;
//3-4、创建三元组模式(基于三元组)
ElementTriplePattern tp1 = new ElementTriplePattern(t1) ;
//3-5、将三元组模式加入元素组中
elg.addElementTriplePattern(tp1) ;
//(3-2 --〉 3-5)可以重复多次,最终得到一个元素组[ElementGroup]
Triple t2 = new Triple(varX, DC.description.asNode(), Node.createVariable("desc")) ;
elg.addElementTriplePattern(new ElementTriplePattern(t2)) ;
//4、将元素组[ElementGroup]设置到查询[Query],
//这个元素组[ElementGroup]相当于SPARQL中的查询条件
query.setQueryPattern(elg) ;
//5、设置查询的选择结果,
//相当于SPARQL中的查询结果条目,就是select后面跟的部分
query.addResultVar(varTitle) ;
//下句可对序列化造成影响:
//如果有这一句,查询将序列化为引入PREFIX的文档,文档中的谓词(属性)将以前缀:名称形式出现;
//否则,将序列化为无PREFIX引入的文档,文档中的的谓词(属性)将以全名称形式出现。
//该句有无对查询结果无影响。
query.getPrefixMapping().setNsPrefix("dc" , DC.getURI()) ;
query.serialize(new IndentedWriter(System.out,true)) ;
System.out.println() ;
//6、将模型、查询一并交给查询引擎,执行查询
//查询的过程是一个模式匹配的过程,和prolog的机制应该一样,都和描述逻辑有关
QueryExecution qexec = QueryExecutionFactory.create(query, model) ;
//7、结果的显示。。。(现在还没仔细研究,再说)
//....
//8、最后别忘了吧查询引擎关掉,释放资源
//下面这一句话,就把查询引擎、模型、查询以及查询中由三元组模式构成的元素组全释放了
qexec.close() ;
[推荐下载:cvs -d:pserver:anonymous@jena.cvs.sourceforge.net:/cvsroot/jena login]
//1、创建模型[Model](rdf模型)
//无怪乎是用一堆三元组表示
Model model = createModel() ;
//2、创建查询[Query]
Query query = QueryFactory.make() ;
//2-1、设置查询类型 为select型
query.setQueryType(Query.QueryTypeSelect) ;
//3、创建模式[Pattern]
//3-1、创建元素组[ElementGroup](组中每一个元素都是一个三元组模式[ElementTriplePattern])
ElementGroup elg = new ElementGroup() ;
//3-2、创建变量(Node类型)
Node varTitle = Node.createVariable("title") ;
Node varX = Node.createVariable("x") ;
//3-3、创建三元组(基于变量和谓词(或者叫属性))
Triple t1 = new Triple(varX, DC.title.asNode(), varTitle) ;
//3-4、创建三元组模式(基于三元组)
ElementTriplePattern tp1 = new ElementTriplePattern(t1) ;
//3-5、将三元组模式加入元素组中
elg.addElementTriplePattern(tp1) ;
//(3-2 --〉 3-5)可以重复多次,最终得到一个元素组[ElementGroup]
Triple t2 = new Triple(varX, DC.description.asNode(), Node.createVariable("desc")) ;
elg.addElementTriplePattern(new ElementTriplePattern(t2)) ;
//4、将元素组[ElementGroup]设置到查询[Query],
//这个元素组[ElementGroup]相当于SPARQL中的查询条件
query.setQueryPattern(elg) ;
//5、设置查询的选择结果,
//相当于SPARQL中的查询结果条目,就是select后面跟的部分
query.addResultVar(varTitle) ;
//下句可对序列化造成影响:
//如果有这一句,查询将序列化为引入PREFIX的文档,文档中的谓词(属性)将以前缀:名称形式出现;
//否则,将序列化为无PREFIX引入的文档,文档中的的谓词(属性)将以全名称形式出现。
//该句有无对查询结果无影响。
query.getPrefixMapping().setNsPrefix("dc" , DC.getURI()) ;
query.serialize(new IndentedWriter(System.out,true)) ;
System.out.println() ;
//6、将模型、查询一并交给查询引擎,执行查询
//查询的过程是一个模式匹配的过程,和prolog的机制应该一样,都和描述逻辑有关
QueryExecution qexec = QueryExecutionFactory.create(query, model) ;
//7、结果的显示。。。(现在还没仔细研究,再说)
//....
//8、最后别忘了吧查询引擎关掉,释放资源
//下面这一句话,就把查询引擎、模型、查询以及查询中由三元组模式构成的元素组全释放了
qexec.close() ;
相关文章推荐
- jena->arq学习2--深入arq,arq中的几个对象(1)--Query
- Paradigms of Computer Programming,编程模式学习中递归调用的练习02-计算素数
- Paradigms of Computer Programming,编程模式学习中递归调用的练习01
- jena->arq学习2--深入arq,arq中的几个对象(2)--Model
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.6 中断和异常处理
- <<Linux内核完全剖析 --基于0.12内核>> 学习笔记 第4章 80x86保护模式及其编程 4.1 80x86系统寄存器和系统指令
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.5 保护
- 一步步学习java并发编程模式之Active Object模式(二)java实现异步调用
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.3 分段机制
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.7 任务管理
- jena->arq学习2--深入arq,QueryExecutionFactory.create()到底干了什么?
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.8 保护模式编程初始化
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.4 分页机制
- 我的Java开发学习之旅------>Java双重检查锁定及单例模式详解(转)
- 一步步学习java并发编程模式之Active Object模式(一)什么是active object
- Promise模式编程链式调用中的一个小坑——匿名函数
- Scala学习整理[第三十二章 GUI编程]<Programming In Scala>
- 【学习】【保护模式编程、九】
- 保护模式编程<五>
- OpenCV 2 学习笔记(12): 算法的基本设计模式<3>:单例模式(Singleton pattern)