在Sesame中,如何导出RDFS / OWL实现结果,在主题位置具有RDF文字?

时间:2015-08-19 13:19:17

标签: rdf owl sesame rdfs

我在Sesame 2.8.5中遇到了RDFS蕴涵问题。我想从(1)和(2)中自动推导出(3)(在这里使用Turtle表示法)。这被定义为the RDF 1.1 specification中的规则 rdfs3 以及the OWL-RL specification中的规则 prp-rng

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

我使用ForwardChainingRDFSInferencer类在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 .

我的问题是:如果事实3不是因为文字不允许出现在RDF三元组的主题位置,那么如何执行完整的RDFS和/或OWL实现(符合上述内容)在芝麻中提到的规格?

1 个答案:

答案 0 :(得分:1)

RDF中的主题位置不允许使用文字。因此,事实3不​​是合法的RDF三元组,因此芝麻的推论者并没有得出它。这并不意味着Sesame的推理器是不完整的:它衍生出所有可以合法推导的RDFS事实。或者,如果您认为这确实构成了不完整性,那么这意味着任何实现RDFS Entailment的RDF推理器按照定义都是不完整的,因为它无法在RDF标准中导出这样的事实。

请注意,RDF语义规范在讨论在主题位置具有文字的可能性(以及制作所需的蕴涵类型)时,明确地引用了“广义RDF”的概念 - 但是这个概念本身就是一个假设的扩展。标准,而不是自身的规范性。

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