setSameAs() 关联数据 --- Jena

Posted

技术标签:

【中文标题】setSameAs() 关联数据 --- Jena【英文标题】:setSameAs() Linked Data --- Jena 【发布时间】:2012-10-14 20:43:01 【问题描述】:

我正在尝试使用链接两个人 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 个个人。

【问题讨论】:

【参考方案1】:

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

在Jena documentation 的OWL Reasoning 中有一个表格,列出了不同推理器配置文件的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_MEM_MINI_RULE_INF 应该可以解决您的问题。

【讨论】:

以上是关于setSameAs() 关联数据 --- Jena的主要内容,如果未能解决你的问题,请参考以下文章

JENA:初始化 HSQLDB RDF 数据存储

Jena:如何推断数据/性能问题

将许多语句加载到 Jena 数据集中的最有效方法是啥?

导入本体到Jena TDB数据库

Jena+fuseki

在 Apache Jena Fuseki 中压缩数据集