如何检查SPARQL中变量的前缀?

如何检查SPARQL中变量的前缀?,sparql,dbpedia,virtuoso,Sparql,Dbpedia,Virtuoso,我想知道RDF中有多少资源,但找不到任何教程来解释如何检查SPARQL中变量的前缀 我试过这个: 选择计数(?x),其中{ res:?x?p?v } 但是它有语法错误。我正在使用virtuoso for DBPedia您可以使用strstarts(字符串,前缀)检查字符串是否以前缀开始。您可以使用str函数获取IRI的字符串表示形式,包括由前缀生成的IRI。例如,如果您有前缀ex:,那么ex:本身就是一个合法的IRI,str(ex:)产生”http://example.org/“。这意味着您可

我想知道RDF中有多少资源,但找不到任何教程来解释如何检查SPARQL中变量的前缀

我试过这个:

选择计数(?x),其中{
res:?x?p?v
}

但是它有语法错误。我正在使用virtuoso for DBPedia

您可以使用strstarts(字符串,前缀)检查字符串是否以前缀开始。您可以使用str函数获取IRI的字符串表示形式,包括由前缀生成的IRI。例如,如果您有前缀ex:,那么ex:本身就是一个合法的IRI,str(ex:)产生”http://example.org/“。这意味着您可以通过执行strstarts(str(?.x),str(p:)来检查作为变量?x值的IRI是否以某个特定前缀p:开头。然后你可以根据它过滤,或者数一数,等等

下面是一个将?thing绑定到几个不同值的示例,其中一些值以dbpedia owl:前缀开头:

选择*where{
值?东西{dbpedia owl:a dbpedia owl:b dbpprop:c}
绑定(strstarts(str(?thing),str(dbpedia owl:)为?startsWithDBpediaOwl)
}

您也可以对此进行筛选,然后计算结果:

选择(计数(*)为?n)其中{
值?东西{dbpedia owl:a dbpedia owl:b dbpprop:c}
过滤器strstarts(str(?thing),str(dbpediaowl:)
}

当您使用
时,它是可变的。不能为其指定前缀。你到底想提取什么?我想在DBPedia中找到充当任何三元组的subject角色的实体的数量,以及它们的URI的前缀
res: