Rdf setSameAs()链接数据--Jena

Rdf setSameAs()链接数据--Jena,rdf,semantics,jena,owl,Rdf,Semantics,Jena,Owl,我正在尝试使用 B.setSameAs(A) OR A.setSameAs(B) 有一个属性有一个,有两个 B有一个财产,有三个 我希望B的属性可以被推断为a的属性。不幸的是,当我列出a的属性时,hastree没有出现 这是我的设置: OntModel onto = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF, null); String NAMESPACE1 =

我正在尝试使用

      B.setSameAs(A) OR A.setSameAs(B)
有一个属性有一个,有两个

B有一个财产,有三个

我希望B的属性可以被推断为a的属性。不幸的是,当我列出a的属性时,hastree没有出现

这是我的设置:

      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
a.setLiteral(一,真);
a、 setLiteral(两个,true);
b、 setLiteral(三,真);
a、 setSameAs(b)//这将导致RDF条目中有一行
//b、 setSameAs(a)//我也试过用这个,但也没用
//在这里,我只是设置了一个迭代器来显示
//不幸的是,hastree没有显示在
我已详细列出了困扰我的事情

  • 当我尝试列出A的所有属性时,hastree没有出现
  • 当我列出MyClass的所有个体时,A和B都会显示出来——我想这不是正确的结果,因为A=B和B=A,所以应该只显示1个个体

  • 您没有使用支持
    owl:sameAs

    在的中有一个表,其中列出了不同reasoner概要文件的OWL覆盖率

    owl:sameAs
    的行说明了以下内容:

    owl:sameAs, owl:differentFrom, owl:distinctMembers  | full, mini  | owl:distinctMembers is currently translated into a quadratic set of owl:differentFrom assertions.
    
    因此,为了获得您想要的行为,您必须使用完整/小型OWL推理机,您的代码显示您正在使用微型推理机


    将您的代码改为使用
    OntModelSpec.OWL\u MEM\u MINI\u RULE\u INF
    应该可以解决您的问题。

    您没有使用支持
    OWL:sameAs

    在的中有一个表,其中列出了不同reasoner概要文件的OWL覆盖率

    owl:sameAs
    的行说明了以下内容:

    owl:sameAs, owl:differentFrom, owl:distinctMembers  | full, mini  | owl:distinctMembers is currently translated into a quadratic set of owl:differentFrom assertions.
    
    因此,为了获得您想要的行为,您必须使用完整/小型OWL推理机,您的代码显示您正在使用微型推理机

    将代码改为使用
    OntModelSpec.OWL\u MEM\u MINI\u RULE\u INF
    应该可以解决您的问题