2

如何使用 Jena 生成以下 RDF/XML?

<rdfs:Class rdf:about="http://example.com/A#B">
    <rdfs:subClassOf>
            <rdfs:Class rdf:about="http://example.com/A" />
     </rdfs:subClassOf>
        <rdf:Property rdf:about="http://example.com/C">
            <rdfs:range rdf:resource="http://example.com/A" />
        </rdf:Property>
</rdfs:Class>   
4

3 回答 3

9

网上有很多 Jena 教程。但是,您的要求非常简单。这是一个解决方案:

package example;

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.ModelFactory;

class RdfXmlExample {
    public static void main( String[] args ) {
        new RdfXmlExample().run();
    }

    public void run() {
        OntModel m = ModelFactory.createOntologyModel( OntModelSpec.RDFS_MEM );
        String NS = "http://example.com/test#";

        OntClass a = m.createClass( NS + "A" );
        OntClass b = m.createClass( NS + "B" );

        a.addSubClass( b );

        OntProperty c = m.createOntProperty( NS + "c" );
        c.addRange( a );

        m.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:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <rdfs:Class rdf:about="http://example.com/test#B">
    <rdfs:subClassOf>
      <rdfs:Class rdf:about="http://example.com/test#A"/>
    </rdfs:subClassOf>
  </rdfs:Class>
  <rdf:Property rdf:about="http://example.com/test#c">
    <rdfs:range rdf:resource="http://example.com/test#A"/>
  </rdf:Property>
</rdf:RDF>
于 2011-07-14T15:36:42.613 回答
1

@Ian Dickinson 的回答很到位。如果您希望将此输出写入文件,则可以改用此行

 m.write( new FileWriter("some-file.owl"), "RDF/XML-ABBREV" );

然后,您可以通过 protege 或在 WebVowl 上查看此文件。

于 2015-05-27T09:45:46.863 回答
0

代码+解释

  • Jena RDF API 教程
  • SPARQL 教程
  • 本体 API 概述

http://incubator.apache.org/jena/getting_started/index.html

从耶拿开始的好地方。

于 2012-02-13T23:18:33.640 回答