在 Sesame 中,如何导出 RDFS/OWL 个在主题位置具有 RDF 文字的物化结果?

In Sesame, how does one derive RDFS/OWL materialization results that have an RDF literal in the subject position?

我在 Sesame 2.8.5. I want to automatically deduce (3) from (1) and (2) (using Turtle notation here). This is defined as rule rdfs3 in the RDF 1.1 specification and as rule prp-rng in the OWL-RL specification 中遇到 RDFS 蕴含问题。

(1) foaf:givenName rdfs:range     xsd:string .
(2) ex:wouter      foaf:givenName "Wouter"   .
(3) "Wouter"       a              xsd:string .

我已经使用 ForwardChainingRDFSInferencer class 在 Sesame 中实现了这个,如下所示:

public static void main(String[] args) throws RepositoryException, RDFHandlerException {
  Repository r = new SailRepository(new ForwardChainingRDFSInferencer(new MemoryStore()));
  r.initialize();
  ValueFactory f = r.getValueFactory();
  RepositoryConnection c = r.getConnection();
  try {
    c.add(FOAF.GIVEN_NAME, RDFS.RANGE, XMLSchema.STRING);
    c.add(f.createURI("http://example.org/", "wouter"), FOAF.GIVEN_NAME, f.createLiteral("Wouter", XMLSchema.STRING));
    RepositoryResult<Statement> s = c.getStatements(null, null, null, true);
    Rio.write(Iterations.addAll(s, new LinkedHashModel()), System.out, RDFFormat.TURTLE);
  } finally {c.close();}
}

输出包含许多推断的事实,例如 (4),但不包括事实 (3)。

(4) ex:wouter a rdfs:Resource .

我的问题是:如果因为RDF三元组的主语位置不允许出现字面量而无法导出事实3,那么如何执行完整的RDFS and/or OWL 在Sesame中实现(符合上述规范)?

RDF 中的主题位置不允许使用文字。因此,事实 3 不是合法的 RDF 三元组,因此 Sesame 的推理机不会推导出它。这并不意味着 Sesame 的推理器是不完整的:它导出了所有可以合法导出的 RDFS 相关事实。或者,如果您想争辩说这确实构成了不完整性,那么这意味着任何实现 RDFS 蕴涵的 RDF 推理器根据定义是不完整的,因为它无法在 RDF 中推导出此类事实标准。

请注意,RDF 语义规范在讨论在主题位置使用文字的可能性(并制作您想要的蕴涵类型)时明确引用了 "generalized RDF" 的概念 - 然而这个概念本身就是一个假设标准的延伸,本身并不规范。

所以,长话短说:如果你想在主题位置使用文字,你就不是在做 RDF,也不能使用 Sesame(或任何其他符合标准的 RDF 框架)。