2012-06-22 73 views
3

假設我有一個XSD文件,其中有下面幾行代碼;如何將XSD簡單類型轉換爲使用Jena的rdfs:數據類型

<xsd:simpleType name="test"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:maxLength value="50" /> 
    </xsd:restriction> 
</xsd:simpleType> 

我所試圖做的是此XSD簡單類型爲RDFS的實例轉換:數據類型的本體。以下是我想要的。

<rdfs:Datatype rdf:about="http://www.example.org/example1/#testDatatype"> 
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> 
    <owl:equivalentClass> 
    <rdfs:Datatype> 
     <owl:onDatatype rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> 
     <owl:withRestrictions rdf:parseType="Collection"> 
     <rdf:Description> 
      <xsd:maxLength rdf:datatype="http://www.w3.org/2001/XMLSchema#string" 
      >50</xsd:maxLength> 
     </rdf:Description> 
     </owl:withRestrictions> 
    </rdfs:Datatype> 
    </owl:equivalentClass> 
</rdfs:Datatype> 

如何使用Jena做到這一點?

+0

讓我看看我是否正確理解它:您需要一段解析XSD類型定義的代碼並自動創建相應的'rdfs:Datatype',對吧?我不確定耶拿是否可以自己做到這一點。 –

+0

這正是我想要的。 – atakan

回答

0

原來我可以用下面的代碼來做到這一點。我用XSOM解析XSD。假設我將「test」simpletype存儲在一個名爲「simple」(XSSimpleType)的變量中。

String URI = simple.getTargetNamespace() + "#" + simple.getName() + "Datatype"; 
OntModel ontology = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); 
OntClass datatype = ontology.createOntResource(OntClass.class, RDFS.Datatype, URI);     

Resource onDatatype = XSD.xstring; 

OntClass equivClass = ontology.createOntResource(OntClass.class, RDFS.Datatype, null); 
equivClass.addProperty(OWL2.onDatatype, onDatatype); 
datatype.addEquivalentClass(equivClass); 

它不是一個完整的代碼,它不包含與解析XSD相關的代碼段,但我希望它能給出這個想法。

+0

如果這爲你工作,一定要接受你的答案! –

相關問題