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

使用OWLAPi和JFact推理器获取特定类的所有个体

商开宇
2023-03-14
for (OWLClass c : myPizza.getClassesInSignature()) {
        NodeSet<OWLNamedIndividual> instances = reasoner.getInstances(c, true);
        System.out.println(c.getIRI().getFragment());
        if (c.getIRI().getFragment().equals("Person")){

            for (OWLNamedIndividual i : instances.getFlattened()) {
                System.out.println(i.getIRI().getFragment()); 

        }
    }
        else {
            continue;
        }
        break;

    }

共有1个答案

东门彬
2023-03-14

调用Reasoner.GetInstances(c,true);将只给出c;如果您所关注的个体是c的子类的实例,那么它们将被跳过。切换到Reasoner.GetInstances(c,false);以包含子类的实例。

您还将在第一次迭代后调用break;。如果Person不是签名中的第一个类,则永远不会查找Person的实例。

您可以稍微更改代码,以减少推理工作:

for (OWLClass c : myPizza.getClassesInSignature()) {
    if (c.getIRI().getFragment().equals("Person")){
        NodeSet<OWLNamedIndividual> instances = reasoner.getInstances(c, false);
        System.out.println(c.getIRI().getFragment());
        for (OWLNamedIndividual i : instances.getFlattened()) {
            System.out.println(i.getIRI().getFragment()); 
        }
    }
}
 类似资料:
  • 这是我的OWL文件的一部分: 如何仅从属性中获取

  • 我试图解析我的大学网站,以获得一个新闻列表(标题+链接)从主要网站。然而,当我试图解析一个完整的网站时,我要查找的链接被嵌套在其他类、表等的深处。下面是我试图使用的代码: 但不管用。如果每一个链接都放在以下位置,那么是否有更好的方法获得所有这些链接的href值和标题: 也许是某种循环,它会迭代所有这些标记,并从中获取值? 感谢帮助:-)

  • 有一种方法可以找到类的所有命名子类,而不需要为(OWLClass子类:reasoner.GetSubclasses(clazz,true).GetFlatened())使用推理器

  • 问题内容: 我正在尝试浏览特定用户的推文,并获得对该推文的所有回复。我发现twitter的APIv1.1不直接支持它。 是否有破解或变通方法来获取特定推文的回复。我正在使用python Streaming API。 问题答案: 有使用REST API的解决方法。 您将需要要查找回复的原始推文作者的id_str和@username。 您应该将Search API用于作者的“ @用户名”。浏览结果以查

  • 问题内容: 使用JavaScript在具有特定CSS类的html文档中获取所有元素的数组的最佳方法是什么? 目前没有像jQuery这样的JavaScript框架现在允许在这里使用,我可以循环所有元素并亲自检查它们。我希望有一些优雅的东西。 问题答案: 它的值得指出的对于原生浏览器支持已经得到了_很多_更好。但是,如果您必须支持旧版浏览器,那么… 使用已经写好的一个。大多数主要的JS库都以某种形式包