3

以下のコード行を持つXSDファイルがあるとします。

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

私がやろうとしているのは、このxsd単純型をオントロジーのrdfs:Datatypeのインスタンスに変換することです。以下は私が欲しいものです。

<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>

イエナを使用してこれを行うにはどうすればよいですか?

4

1 に答える 1

0

以下のコードでこれを行うことができます。XSDをXSOMで解析します。「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の解析に関連するコードセグメントは含まれていませんが、アイデアが得られることを願っています。

于 2012-06-26T12:53:01.883 に答える