假设我们有一个包含以下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?
答案 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/") .
}