gpt4 book ai didi

rdf - 从文件加载本体时如何覆盖默认前缀?

转载 作者:行者123 更新时间:2023-12-02 07:46:43 24 4
gpt4 key购买 nike

我已经使用 RDFS 创建了一个本体,使用相对 URIref 来保存击键。现在,我想用 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/XML 中设置基本 URI,但您使用的是 xmlns:base,这是不正确的用法。要设置 Base URI,您必须使用 xml:base,您所做的是定义一个额外的命名空间 base 而不是定义 Base URI。

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

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

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

关于rdf - 从文件加载本体时如何覆盖默认前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com