我想找到RDF中有多少资源,但我找不到任何教程来解释如何检查SPARQL中的变量前缀。
我试过这个:
select count(?x) where {
res:?x ?p ?v
}
但它有语法错误。我正在为DBPedia使用virtuoso
答案 0 :(得分:4)
您可以使用 strstarts(字符串,前缀)来检查字符串是否以前缀开头。您可以使用 str 函数来获取IRI的字符串表示形式,包括从前缀生成的IRI。例如,如果你有前缀ex:< http://example.org/> ,那么 ex:本身就是合法的IRI,而 str (例如:)产生" http://example.org/" 。这意味着您可以通过执行 strstarts(str(?x)来检查作为变量?x 值的IRI是否以某个特定前缀 p:开头),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:))
}