【问题标题】:How can I override the default prefix when loading an ontology from file?从文件加载本体时如何覆盖默认前缀?
【发布时间】:2011-06-28 19:59:46
【问题描述】:

我使用 RDFS 创建了一个本体,使用相对 URIrefs 来保存击键。现在,我想用 Jena 加载本体并用它来构造我的数据。但是,当我使用m.read("file:flow-schema.rdf"); 读取文件并使用m.write(System.out, "RDF/XML-ABBREV", "http://flowschema/#"); 显示它时,相对URIrefs 以file:flow-schema.rdf 为前缀,而不是http://flowschema/#。如何更改从文件加载的本体的默认前缀?

这是我的本体文件:

<?xml version="1.0" ?>
<!DOCTYPE rdf:RDF [<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">]>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:base="http://flowschema/#">

<rdfs:Class rdf:ID="Flow" />
<rdf:Property rdf:ID="srcIP">
    <rdfs:domain rdf:resource="#Flow" />
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal" />
</rdf:Property>
<rdf:Property rdf:ID="dstIP">
    <rdfs:domain rdf:resource="#Flow" />
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal" />
</rdf:Property>

</rdf:RDF>

这是从文件中读取本体的 Java 代码:

OntModel m = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM);
m.read("file:flow-schema.rdf");
m.write(System.out, "RDF/XML-ABBREV", "http://flowschema/#");

【问题讨论】:

    标签: rdf ontology jena


    【解决方案1】:

    您似乎尝试在 RDF/XML 中设置基本 URI,但您使用了 xmlns:base,这是不正确的用法。要设置 Base URI,您必须使用 xml:base,您所做的是定义一个额外的命名空间 base,而不是定义 Base URI。

    更改您的 RDF/XML 的那部分,然后它应该可以正常工作,而无需其他人建议的解决方法。

    您当前编写的代码以不正确的 URI 告终,因为 Jena 已经使用文件 URI 作为基础自动生成了绝对 URI。如果就 Jena 而言,RDF 中的 URI 不被认为位于该 Base URI 之下,那么设置用于写入的 Base URI 无效。

    注意: RDF 通常需要绝对 URI,相对 URI 是一种序列化便利,可以帮助压缩语法。如果您使用相对 URI,您应该始终明确指定 Base URI(如果语法允许),如果不使用绝对 URI。

    【讨论】:

      【解决方案2】:

      您可以通过指定基本 URI 而不是 read(String url) 来使用 read(String url, String base, String lang) 吗? ?

      【讨论】:

        【解决方案3】:

        Jena 在内部对所有内容都使用完整的 URI。这就是为什么您必须在加载时指定基本 URI。仅在写入时指定它不会产生预期的效果。正如皮埃尔所说,这应该可行:

        m.read("file:flow-schema.rdf", "http://flowschema/#", "RDF/XML");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多