首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pellet +传递性+原因+ OWL-API

Pellet +传递性+原因+ OWL-API
EN

Stack Overflow用户
提问于 2016-02-07 16:50:59
回答 1查看 104关注 0票数 0

我在推断类似于传递性对象属性时,使用Pellet有问题。我有类似于B的个体A和类似于C的个体B。我想在OWL API中使用Pellet或使用Jena来获得个体组A、B、C,但我无法弄清楚在OWL API中进行推理的代码。

我已经在OWL API中加载了本体,是否有示例代码来推断与相同传递属性相关联的一组个体?

EN

回答 1

Stack Overflow用户

发布于 2016-02-19 17:02:26

这个答案来自Ignazio Palmisano:

如果当前没有来自pellet的解决方案,我们可以编写自己的解决方案。

  • 选择您的起点,即您的传递链中的第一个人
  • 为每个填充物检索
  • 之后的物业的所有填充物,检索上一步中的所有填充物
  • 注意避免循环<

>F29>

(同时拥有set和list的原因是能够在添加元素时以可预测的方式迭代,并保持快速的包含检查-以少量内存为代价)

代码语言:javascript
复制
 OWLDataFactory factory = manager.getOWLDataFactory();
            Set<OWLNamedIndividual> found= new HashSet<>(); 
            List<OWLNamedIndividual> list= new ArrayList<>();
            List<OWLNamedIndividual> SeaIcelist= new ArrayList<>();
            PrefixManager pm = new DefaultPrefixManager("http://www.semanticweb.org/SeaIceOntology#");

            OWLNamedIndividual root = factory.getOWLNamedIndividual(":thickness", pm);
            OWLObjectProperty p = factory.getOWLObjectProperty(IRI
                    .create("http://www.semanticweb.org/SeaIceOntology#similarTo")); 
            OWLReasoner r= new StructuralReasonerFactory().createNonBufferingReasoner(loadMODIS);

            found.add(root); 
            list.add(root); 


            while(i < list.size()){ 
                for(Node<OWLNamedIndividual> ind:r.getObjectPropertyValues
                        (list.get(i), (OWLObjectPropertyExpression)p)){ 
                    for(OWLNamedIndividual nind:ind){
                        if(found.add(nind)){
                            list.add(nind);
                            /* select specific individuals to the SeaIcelist */
                            for(OWLClassExpression ex : nind.getTypes(loadMODIS)) {
                                while(ex.asOWLClass().getSuperClasses(loadMODIS).iterator().hasNext()){
                                    for(OWLClassExpression cl:ex.asOWLClass().getSuperClasses(loadMODIS)) {
                                        if (cl.equals(factory.getOWLClass
                                                (IRI.create("http://www.semanticweb.org/SeaIceOntology#EarthScienceProperty"))) ){
                                            SeaIcelist.add(nind);
                                            break;
                                        }
                                    }
                                    ex = ex.asOWLClass().getSuperClasses(loadMODIS).iterator().next();
                                }
                             }
                            /* select specific individuals to the SeaIcelist */
                        }
                    }
                }
                i ++;
            }

            for (int j = 1; j < i; j ++){
                System.out.println("These are all the terms which has similar meanings." + list.get(j).toStringID());
            }

            int size = SeaIcelist.size();
            for (int j = 0; j < size; j ++){
                System.out.println("These are all the standard terms which has similar meanings." + SeaIcelist.get(j).toStringID());
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35251488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档