如何检查 SPARQL 中变量的前缀?
How to check prefix of variables in SPARQL?
我想查找 RDF 中有多少资源,但找不到任何教程来解释如何检查 SPARQL 中变量的前缀。
我试过这个:
select count(?x) where {
res:?x ?p ?v
}
但它有语法错误。我正在为 DBPedia 使用 virtuoso
您可以使用 strstarts(string,prefix) 检查 string 是否以 prefix[=37= 开头].您可以使用 str 函数来获取 IRI 的字符串表示形式,包括从前缀生成的 IRI。例如,如果你有 前缀 ex: ,那么 ex: 本身就是一个合法的 IRI ,并且 str(ex:) 产生 "http://example.org/"。这意味着您可以通过执行 [=24] 检查作为变量 ?x 值的 IRI 是否以某个特定前缀 p: 开头=]strstarts(str(?x),str(p:))。然后你可以过滤它,或者计算它,等等
这是一个将 ?thing 绑定到几个不同值的示例,其中一些值以 dbpedia-owl:前缀:
select * where {
values ?thing { dbpedia-owl:a dbpedia-owl:b dbpprop:c }
bind( strstarts(str(?thing),str(dbpedia-owl:)) as ?startsWithDBpediaOwl )
}
SPARQL results (a and b get true, c gets false)
您也可以对其进行过滤,然后统计结果:
select (count(*) as ?n) where {
values ?thing { dbpedia-owl:a dbpedia-owl:b dbpprop:c }
filter strstarts(str(?thing),str(dbpedia-owl:))
}
我想查找 RDF 中有多少资源,但找不到任何教程来解释如何检查 SPARQL 中变量的前缀。
我试过这个:
select count(?x) where {
res:?x ?p ?v
}
但它有语法错误。我正在为 DBPedia 使用 virtuoso
您可以使用 strstarts(string,prefix) 检查 string 是否以 prefix[=37= 开头].您可以使用 str 函数来获取 IRI 的字符串表示形式,包括从前缀生成的 IRI。例如,如果你有 前缀 ex:
这是一个将 ?thing 绑定到几个不同值的示例,其中一些值以 dbpedia-owl:前缀:
select * where {
values ?thing { dbpedia-owl:a dbpedia-owl:b dbpprop:c }
bind( strstarts(str(?thing),str(dbpedia-owl:)) as ?startsWithDBpediaOwl )
}
SPARQL results (a and b get true, c gets false)
您也可以对其进行过滤,然后统计结果:
select (count(*) as ?n) where {
values ?thing { dbpedia-owl:a dbpedia-owl:b dbpprop:c }
filter strstarts(str(?thing),str(dbpedia-owl:))
}