如何清理Jena InfModel结果?

时间:2014-07-04 08:51:25

标签: java jena owl inference

我正在努力推理耶拿。我从Jena official tutorial开始 我试图通过使用以下代码在控制台中显示InfModel结果:

infModel.write(System.out, "RDF/XML-ABBREV");

但结果并不干净,它显示了许多不必要的信息。它表明了这一点:

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns="urn:x-hp:eg/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > 
  <rdf:Description rdf:about="http://www.w3.org/2001/XMLSchema#double">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.w3.org/2001/XMLSchema#float">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#short"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#byte"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#decimal"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#duration"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedLong"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedShort"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#nonPositiveInteger"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#long"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedInt"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#time"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedByte"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.w3.org/2001/XMLSchema#unsignedLong">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedLong"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#long"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#time"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#duration"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
    <owl:equivalentClass rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedLong"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#backwardCompatibleWith">
    <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Ontology"/>
    <rdfs:range rdf:resource="http://www.w3.org/2002/07/owl#Ontology"/>
    <rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#backwardCompatibleWith"/>
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.w3.org/2001/XMLSchema#unsignedByte">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedLong"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedInt"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#int"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#long"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#byte"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#short"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedByte"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedShort"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#time"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#duration"/>
    <owl:disjointWith rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
    <owl:equivalentClass rdf:resource="http://www.w3.org/2001/XMLSchema#unsignedByte"/>
  </rdf:Description>
  <rdf:Description rdf:nodeID="A0">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="urn:x-hp:eg/Bundle"/>
    <rdf:type rdf:resource="urn:x-hp:eg/GameBundle"/>
    <owl:sameAs rdf:nodeID="A0"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.w3.org/2001/XMLSchema#hexBinary">
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.w3.org/2002/07/owl#Restriction">
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <owl:equivalentClass rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
  </rdf:Description>
  <rdf:Description rdf:about="urn:x-hp:eg/Bundle">
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdfs:subClassOf rdf:resource="urn:x-hp:eg/Bundle"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <owl:equivalentClass rdf:resource="urn:x-hp:eg/Bundle"/>
  </rdf:Description>
</rdf:RDF>

你知道如何最真实地展示InfModel吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

  

但结果并不干净,

结果非常干净;它是一个结构良好的数据,其逻辑推理来自您提供的数据。

  

它显示了许多不必要的信息。

我不确定您的意思是:(i)数据不正确(即,它不一定是来自输入)或(ii)它只是数据您不感兴趣的(即,您不需要的数据)。 (i)不正确;从数据中推断出 do 的推断语句。例如,xsd:float 与xsd:date不相交。 (ii)可能是正确的;你还没有告诉我们你需要什么数据以及你不需要什么数据,所以我们无法真正说出你想要或不想要的数据。您也没有显示您的代码,因此很难知道您的推断来自何处。

如果你正在使用Pellet,那么你可能会对Pellet FAQ中的How can I extract all inferences?感兴趣,它描述了ModelExtractor的使用:

   // Create an inference extractor
   ModelExtractor extractor = new ModelExtractor(model);

   // Extract default set of inferences
   Model inferences = extractor.extractModel();

如果您不使用Pellet,那么您仍然可以使用Jena的Model列表语句列出模型中的一些语句。您可以创建一个选择器,它将仅提取您认为必要的语句。&#34; (直到你告诉我们什么&#34; s&#34;必要的,&#34;我们无法真正帮助你实现选择器。)

  

listStatements

     

StmtIterator listStatements(Selector s)

     

列出与选择器匹配的语句。我们会考虑一个声明   如果s的测试方法在s上调用时返回true,则匹配。

模型还有一个add(StmtIterator)方法,因此您可以从InfModel列出Statements,并将它们添加到另一个模型,然后打印第二个模型。