微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建一个从 `rdf:Bag` 中提取信息而不会丢失信息的 SPARQL 查询

如何解决创建一个从 `rdf:Bag` 中提取信息而不会丢失信息的 SPARQL 查询

我对 RDF 还很陌生,但我需要构造一个 RDF 查询来从现有的 RDF 图中提取一些信息。实质上,我正在尝试清除 rdf:Bag 构造的现有 RDF 图。

例如,给定 RDF 图:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns#> .
@prefix bqbiol: <http://biomodels.net/biology-qualifiers/> .

<http://omex-library.org/NewOmex.omex/NewModel.xml#_1>
    bqbiol:is [
        rdf:_1 <http://identifiers.org/uniprot/P00742> ;
        a rdf:Bag
    ] .

我需要在不丢失信息的情况下从 rdf:Bag提取信息。因此,在这种情况下,生成的 rdf 图将是:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns#> .
@prefix bqbiol: <http://biomodels.net/biology-qualifiers/> .

<http://omex-library.org/NewOmex.omex/NewModel.xml#_1>
    bqbiol:is <http://identifiers.org/uniprot/P00742> ;

我的替代方法是在首先创建图形之前使用 libxml2 进行此更改,但似乎 sparql 在这里应该有用(如果我错了,请纠正我)。

有人可以帮我吗?到目前为止,我所想到的只是一个通用的“找到我的一切”sqarql 查询,又名

SELECT ?x ?y ?z 
WHERE {?x ?y ?z }

生产

x,y,z
_:r1r21532r1,http://www.w3.org/1999/02/22-rdf-Syntax-ns#type,http://www.w3.org/1999/02/22-rdf-Syntax-ns#Bag
_:r1r21532r1,http://www.w3.org/1999/02/22-rdf-Syntax-ns#_1,http://identifiers.org/uniprot/P00742
http://omex-library.org/NewOmex.omex/NewModel.xml#_1,http://biomodels.net/biology-qualifiers/is,_:r1r21532r1

所以我生成的任何 sparql 查询都需要涉及特定的 r1r21532r1 空白节点。

编辑:有点进步。

spaqrl 查询

SELECT  ?s ?p1 ?p2
WHERE {
    ?s ?p1 [ ?p2 <http://www.w3.org/1999/02/22-rdf-Syntax-ns#Bag> ] . 
}

生产

| uri<http://omex-library.org/NewOmex.omex/NewModel.xml#_1> | uri<http://biomodels.net/biology-qualifiers/is> | uri<http://www.w3.org/1999/02/22-rdf-Syntax-ns#type> |

哪个更近,但沿途会丢失一些信息。

解决方法

SELECT ?x (bqbiol:is AS ?y) ?z {
    ?x bqbiol:is [ a rdf:Bag ; !a ?z ] . 
}

SELECT  ?x ?y ?z {
    BIND (bqbiol:is AS ?y)
    ?x ?y [ a rdf:Bag ; !a ?z ] . 
}

在 Apache Jena 中或在 RDFS 蕴涵下:

SELECT ?x (bqbiol:is AS ?y) ?z {
    ?x bqbiol:is [ a rdf:Bag ; rdfs:member ?z ] . 
}

您也可以使用 CONSTRUCT 查询表单:

CONSTRUCT { ?x bqbiol:is ?z } {
    ?x bqbiol:is [ a rdf:Bag ; !a ?z ]
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?