如何在SPARQL中拆分字符串

时间:2017-03-22 07:34:04

标签: sparql owl

我正在尝试获取三元组的名称,将PREFIX与值分开,并在两个不同的列中显示这些分割的字符串。

例如foaf:Person

?prefix | ?name
foaf:   | Person

我看到SUBSTR有一些解决方案,但我不知道如何在我的情况下使用它。

有什么想法吗?

提前谢谢: - )

1 个答案:

答案 0 :(得分:0)

RDF中没有前缀URI,这只是表示的概念,但不是数据的一部分。您通过简单的SPARQL查询获得的是具有完整URI的资源,即您的示例http://xmlns.com/foaf/0.1/Person。您可以通过字符串函数执行的操作是按命名空间和本地名称进行拆分,如您所知。

如果你真的想要一个带前缀的URI,首先需要一个前缀映射,例如: foaf -> http://xmlns.com/foaf/0.1/。然后你可以做以下事情:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?prefixedName 
       (strbefore(?prefixedName,":") as ?prefix) 
       (strafter(?prefixedName,":") as ?name) {

 # dummy value
 VALUES ?uri {<http://xmlns.com/foaf/0.1/Person> }

 # get a prefixed name of the URI as string literal
 BIND(replace(str(?uri), str(foaf:), "foaf:") as ?prefixedName)
}

输出:

+--------------+--------+--------+
| prefixedName | prefix |  name  |
+--------------+--------+--------+
| foaf:Person  | foaf   | Person |
+--------------+--------+--------+