通过从jena中加载的本体导入名称空间来编写RDF?

时间:2013-08-09 11:26:45

标签: rdf semantic-web jena ontology

我打算以RDF格式编写和存储大量数据。我将使用SIOC,GEO和dcterms。在Jena中,有没有办法从加载的本体导入名称空间而不是执行以下操作:

model.setNsPrefix("sioc","http://sioc.com/ontologies/sioc#");
Property  ID = model.createProperty("http://sioc.com/ontologies/sioc#" + "ID");

2 个答案:

答案 0 :(得分:2)

嗯,您可以使用基于字符串的方法,但我强烈建议使用以下内容:

String SIOC = "http://sioc.com/ontologies/sioc#";
model.setNsPrefix("sioc",SIOC );
Property  ID = model.createProperty( SIOC + "ID" );

保存一些打字和可能的拼写错误。对于许多常见的词汇表,Jena已经有预定义的词汇表类,它们定义了一堆有用的常量。其中大多数都在com.hp.hpl.jena.vocabulary包中。例如,在DCTerms中有常量​​,例如creator,以便您可以执行类似

的操作
Resource r = ...;
r.addProperty( DCTerms.creator, ... );

当然,耶拿只能预先定义这么多类。对于其他人,您可以使用Jena的schemagen来生成这些类。它是一个命令行工具(但你也可以通过编程方式调用它,我相信),并将它传递给定义词汇表的RDF或OWL文件,然后你得到一个.java文件,返回所有属性的常量常量,课程和词汇中的个人。您也可以获得简单的基于模型的资源或基于OntModel的资源。它是可配置的,我已经在许多项目中使用过。

答案 1 :(得分:0)

如果您使用的是maven,则可以使用以下插件。

    <plugins>
        <plugin>
            <groupId>org.apache.jena</groupId>
            <artifactId>jena-maven-tools</artifactId>
            <version>0.8</version>
            <configuration>
                <includes>
                    <include>src/main/resources/ontologies/*.owl</include>
                    <include>src/main/resources/ontologies/*.rdf</include>
                </includes>
                <fileOptions>
                    <source>
                        <input>default</input>
                        <package-name>com.example.ontology</package-name>
                    </source>
                    <source>
                        <input>src/main/resources/ontologies/*.owl</input>
                        <include>src/main/resources/ontologies/*.rdf</include>
                        <ontology>true</ontology>
                    </source>
                </fileOptions>
            </configuration>
            <executions>
                <execution>
                    <id>schemagen</id>
                    <goals>
                        <goal>translate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

当你运行maven编译时,你会发现OWL / RDF文件中的所有资源和属性都被转换为具有OWL / RDF文件名的相应类中的常量。所以,您可以使用类似OWLFILENAME.RESOURCE或OWLFILENAME.PROPERTY的代码在代码中调用它们。