use*_*752 2 sparql dbpedia virtuoso
我想找到 RDF 中有多少资源,但找不到任何教程来解释如何检查 SPARQL 中的变量前缀。
我试过这个:
select count(?x) where {
res:?x ?p ?v
}
Run Code Online (Sandbox Code Playgroud)
但它有语法错误。我正在为 DBPedia 使用 virtuoso
您可以使用strstarts(string,prefix)检查字符串是否以prefix开头。您可以使用str函数获取 IRI 的字符串表示形式,包括从前缀生成的 IRI。例如,如果你有前缀 ex: <http://example.org/>,那么ex:本身就是一个合法的 IRI,而str(ex:)产生"http://example.org/"。这意味着您可以通过执行strstarts(str(?x),str(p:))来检查作为变量?x值的 IRI 是否以某个特定前缀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 )
}
Run Code Online (Sandbox Code Playgroud)
您也可以对其进行过滤,然后计算结果:
select (count(*) as ?n) where {
values ?thing { dbpedia-owl:a dbpedia-owl:b dbpprop:c }
filter strstarts(str(?thing),str(dbpedia-owl:))
}
Run Code Online (Sandbox Code Playgroud)