3

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

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

2 回答 2

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

于 2013-08-09T13:18:52.690 回答
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 compile 时,您会发现 OWL/RDF 文件中的所有资源和属性都转换为具有 OWL/RDF 文件名的相应类中的常量。因此,您可以在代码中使用类似 OWLFILENAME.RESOURCE 或 OWLFILENAME.PROPERTY 的方式调用它们。

于 2015-03-24T17:33:15.287 回答