Pages - Menu

2013-07-19

JenaAPIを用いたオントロジー構築

Apache Jenaを用いたオントロジーの構築方法。
日本語の記事があまりにも少ないため、落ち着いたらスタートアップガイドをまとめる予定。

サンプルコード

    public void testFunc2() {
        String BASE = "http://mybase#";
        OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_LITE_MEM);
        model.setNsPrefix("mybase", BASE);

        //RDF:TYPE
        OntResource BLOG = model.createOntResource(BASE + "Blog");

        //Property
        OntProperty hasName = model.createOntProperty(BASE + "hasName");

        //Class
        OntClass ITBlog = model.createClass(BASE + "ITBlog");
        ITBlog.setRDFType(BLOG);

        OntClass myBlog = model.createClass(BASE + "myBlog");
        myBlog.setSuperClass(ITBlog);

        myBlog.addProperty(hasName, "Catalina Note");
        myBlog.addProperty(DC.title, "Catalina Note");


        RDFWriter wr = model.getWriter("RDF/XML-ABBREV");
        wr.write(model, System.out, BASE);
        //以下でも可
        //model.write(System.out, "RDF/XML-ABBREV", BASE);
    }

※1
ModelFactoryでModelオブジェクトを生成する際にOntModelSpecを指定しないと、次のようにrdfsの定義まで出力されてしまう。
(ただし、model.writeメソッドで出力する場合はされない模様)
<rdfs:Datatype rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">
    <rdf:type>
      <rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Resource"/>
…

※2
リソースのrdfTypeを定義することで、rdf:IDで出力される。
そうでない場合はrdf:aboutとなる。

実行結果

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:mybase="http://mybase#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Class rdf:ID="myBlog">
    <dc:title>Catalina Note</dc:title>
    <mybase:hasName>Catalina Note</mybase:hasName>
    <rdfs:subClassOf>
      <mybase:Blog rdf:ID="ITBlog"/>
    </rdfs:subClassOf>
  </owl:Class>
  <rdf:Property rdf:ID="hasName"/>
</rdf:RDF>
参考
Apache Jena
An Introduction to RDF and the Jena RDF API Jena I/O Mini HowTo assigning rdf:id in JENA

0 件のコメント:

コメントを投稿