使用 SPARQL 查询查询 RDF

querying RDFs using SPARQL query

假设我们有一个包含以下 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 之类的东西?

您可以将 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/") .
}