导入的 .owl 文件在前缀中具有 #,与原始 RDF4j 三元组存储



当我导入转储时"PathwaysCommons12.All.BIPAX.owl.gz";(从这个页面链接(的这个Virtuoso三层商店,我注意到有"#"s插入在各种URI的前缀之后。

特别是,以下查询在原始端点上运行:

# Query 1
PREFIX pfx: <http://pathwaycommons.org/pc12/>
select ?pw 
where {
?pw a bp:Pathway
values ?pw {pfx:Pathway_c2fd3d95c8c65552a0514393ede60c37}
}

但为了让它在本地端点(导入的owl dump(上运行,我必须添加一个"#"到pfx:的末尾类似:

# Query 2
PREFIX pfx: <http://pathwaycommons.org/pc12/#>
select ?pw 
where {
?pw a bp:Pathway
values ?pw {pfx:Pathway_c2fd3d95c8c65552a0514393ede60c37}
}

请注意,查询1仅在原始端点上工作,而查询2仅在本地端点上工作。

这是怎么回事?

如果我们查看这个庞大的RDF/XML文件的前几行,我们会看到:

<?xml version="1.0" encoding="UTF-8"?>
<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:bp="http://www.biopax.org/release/biopax-level3.owl#"
xml:base="http://pathwaycommons.org/pc12/">
<owl:Ontology rdf:about="">
<owl:imports rdf:resource="http://www.biopax.org/release/biopax-level3.owl#" />
</owl:Ontology>
<bp:ExperimentalForm rdf:ID="ExperimentalForm_ee10aeab-1129-49ad-8217-4193f4fbf7e0">
<bp:comment rdf:datatype = "http://www.w3.org/2001/XMLSchema#string">[ExperimentalFormVocabulary_bait]</bp:comment>
<bp:experimentalFormDescription rdf:resource="#ExperimentalFormVocabulary_701737e5cf53d06134cbd3ee59611827" />
</bp:ExperimentalForm>

注意这里CCD_ 2属性的值:";实验形式_ee10eab-1129-49ad-8217-4193f4fbf7e0";。这是一个相对URI,需要根据基本URI(在文档头中声明:";http://pathwaycommons.org/pc12/"(。RDF/XML语法规范:的第2.14节描述了该解决方案的实现方式

可以使用节点元素上的rdf:ID属性(而不是属性元素,它有另一种含义(来代替rdf:about,并给出一个相当于#的相对IRI,该相对IRI与rdf:ID-属性值串接。例如,如果rdf:ID="0";name";,这将相当于rdf:about="0"#名称";。

(强调矿(

说明书中的实施例16进一步说明了这一点。

归根结底,在解析这个RDF/XML时,作为rdf:ID属性提供的值都解析为http://pathwaycommons.org/pc12/#<ID>。因此,您在GraphDB中得到的结果对于给定的输入是正确的。我不知道为什么在Virtuoso端点中会有所不同:要么他们使用了不同的输入文件,要么他们的解析器中有一个bug,要么用来生成这个转储文件的任何工具都包含一个bug。

可以肯定地说,创建转储文件的人的意图rdf:ID="ExperimentalForm_ee10aeab-1129-49ad-8217-4193f4fbf7e0"将解析为IRIhttp://pathwaycommons.org/pc12/ExperimentalForm_ee10aeab-1129-49ad-8217-4193f4fbf7e0(即没有添加#字符(。有几种方法可以在文件中解决这个问题:要么用rdf:about替换所有出现的rdf:ID,要么不依赖相对URI解析,只使用完整的URI作为rdf:ID值。

最新更新