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