当前位置: 首页 > 知识库问答 >
问题:

Pellet+传递性+Reason+OWL-API

羊舌洛华
2023-03-14

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

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

共有1个答案

夏英发
2023-03-14

这是伊格纳齐奥·帕米萨诺指示的回答:

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

  • 选择起点,即传递链中的第一个人
  • 检索所需属性的所有填充符
  • 对于每个填充符,按照上一步检索所有填充符
  • 注意避免循环

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

 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());
            }
 类似资料:
  • Reason 使你可以在利用 JavaScript 和 OCaml 生态系统的同时编写简单,快速和高质量的类型安全代码。 具有以下特点: 可以快速掌握 强大的自动源代码格式化 采用 JavaScript / C 互操作增量 没有语言级 VM 快速开发和共享项目

  • 我正在使用一个本体(OWL,Protege4)。我有3个人:、和。以及两个对象属性:和。 关系应该是下一个: null 我想要得到的结果是设置关系,并从reasoner获取作为派生属性。 我很感激你事先的帮助!

  • 我是SoapUI的新手,遇到了一个我不明白的问题。目标:我想在不同的测试步骤中将结果从一个Groovy脚本传递到另一个Groovy脚本。 第1步:我有一个生成GUID的Groovy脚本: 步骤2:我有一个属性转移步骤,它接受上述脚本的结果,并将其传递到HTTP请求步骤(正在工作) 步骤3:我有第二个Groovy脚本,它运行curl命令,其中需要包含相同的GUID。 第3步是问题开始的地方。如何从第

  • 英文原文:http://emberjs.com/guides/components/passing-properties-to-a-component/ 默认情况下,组件不能访问模板作用域下的属性。 例如,假设有一个用于显示一篇博客的blog-post组件: 1 2 3 4 <script type="text/x-handlebars" id="components/blog-post">

  • 问题内容: 方法的合同规定了以下4个属性:自反,对称,传递和一致。虽然我了解不遵循自反,对称和一致的危险,并且可以肯定同意遵循和物的优点,但我想知道如果违反和物性会给它带来什么危害? 具体来说,哪个Java库(或各种第三方库)需要依赖才能传递以正常工作?以我的理解,如果其他3个属性实现得当,Collections框架将起作用。 问题答案: 假设三个对象a,b,c与 (伪代码,代表)。 现在,让我们

  • 编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。 整个过程可以参考下图: 整个过程可以分成以下几个步骤: 编译源代码 运行单元测试和集成测试 执行静态代码分析、生成分析报告 创建发布版本 部署到目标环境 部署传递过程 执行冒烟测试和自