我正在尝试使用链接两个人 A 和 B
B.setSameAs(A) OR A.setSameAs(B)
A 有属性 hasOne, hasTwo
B有一个属性hasThree
我希望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
我列出了困扰我的事情。
- 当我尝试列出 A 的所有属性时,hasThree 没有出现。
- 当我列出 MyClass 的所有个人时,A 和 B 都会出现——我想这不是正确的结果,因为 A=B 和 B=A,所以应该只显示 1 个个人。