您的位置:首页 > 编程语言

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() ;

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐