繁体   English   中英

setSameAs()关联数据 - 耶拿

[英]setSameAs() Linked Data — Jena

我试图用两个人A和B联系

      B.setSameAs(A) OR A.setSameAs(B)

A具有属性hasOne,hasTwo

B有一个属性有三个

而且我希望B的属性可以推断为A的属性。不幸的是,当我列出A的属性时,hasThree没有出现

这是我的设置:

      OntModel onto = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF, null);

      String NAMESPACE1 = "http://mynamespace.one#";
      String NAMESPACE2 = "http://mynamespace.two#";

      OntClass myClass = onto.createClass(NAMESPACE1 + "MyClass");

      Individual a = onto.createIndividual(NAMESPACE1 + "A", myClass);
      Individual b = onto.createIndividual(NAMESPACE2 + "B", myClass);

注意:我为B使用了不同的命名空间来模拟不同的地址,但在此设置中它使用相同的类类型

      OntProperty one = onto.createOntProperty(NAMESPACE1 + "hasOne");
      OntProperty two = onto.createOntProperty(NAMESPACE1 + "hasTwo");
      OntProperty three = onto.createOntProperty(NAMESPACE2 + "hasThree");

注意:hasThree属性位于B的相同地址中

      a.setLiteral(one, true);
      a.setLiteral(two, true);
      b.setLiteral(three, true);

      a.setSameAs(b);          //THIS results in the RDF entry for A to have a line <owl:sameAs rdf:resource:"http://mynamespace.two#B" />
      //b.setSameAs(a);          //I TRIED using this too, but it didn't work either

      // IN HERE I JUST SET AN ITERATOR TO SHOW ALL OF THE PROPERTIES OF A
      // UNFORTUNATELY, hasThree DOESN'T SHOW UP UNDER THE PROPERTIES OF A

我列出了令我不安的事情。

  1. 当我尝试列出所有A的属性时,hasThree没有显示。
  2. 当我列出MyClass的所有个体时,A和B都显示出来 - 我认为这不是正确的结果,因为A = B和B = A,因此只应显示1个人。

您没有使用支持owl:sameAs的推理配置文件

Jena文档OWL推理中,有一个表列出了不同推理器配置文件的OWL覆盖范围。

owl:sameAs的行声明如下:

owl:sameAs, owl:differentFrom, owl:distinctMembers  | full, mini  | owl:distinctMembers is currently translated into a quadratic set of owl:differentFrom assertions.

因此,为了获得您想要的行为,您必须使用Full / Mini OWL推理器,您的代码显示您正在使用Micro推理器。

更改代码以使用OntModelSpec.OWL_MEM_MINI_RULE_INF应该可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM