使用SPARQL查询查询RDF

时间:2015-05-26 17:31:04

标签: sql rdf sparql virtuoso

假设我们有一个包含以下3个RDF三元组的数据集。我想使用sparql查询检索所有这三个三元组。

http://test.com/11/META_C1-INST  predicate1     http://test.com/NO_CONTEXT/META_C0059714-INST
http://test.com/23/META_C1-INST  predicate1     http://test.com/NO_CONTEXT/META_C0059714-INST
http://test.com/43/META_C1-INST  predicate1     http://test.com/NO_CONTEXT/META_C0142817-INST

这是我写的查询,但我知道这不对:

prefix pred:<http://test.com/>
            select distinct *
            where {pred:META_C1-INST ?p ?o};

我应该怎么说:“寻找任何来自http://test.com/??/的主题的三元组,其中??可以是11,23,S23?

1 个答案:

答案 0 :(得分:3)

您可以将URI转换为字符串,然后根据其开头进行过滤。您需要使用的关键字是STRSTARTS

select distinct *
where{
?s ?p ?o
filter(STRSTARTS(str(?s), "http://test.com/"))
}

或者您可以使用带有^符号的正则表达式:

select distinct *
where{
?s ?p ?o
FILTER regex(str(?s), "^http://test.com/") .
}