gStore最新版本0.9.1之BIND函数的使用
在内核版本v0.9.1
中,支持了BIND表达式/函数调用,BIND表达式/函数常用于SPARQL查询中,需要返回某个常量值,或者需要赋值给某个参数并用于后续的过滤条件,其语法如下所示:
BIND(value, name)
参数
value
: string类型的字符串值
name
: 自定义的参数名称
示例数据
为了更好的演示BIND函数功能,使用以下的数据作为示例数据:
<Alice> <关注> <Bob> .
<Alice> <喜欢> <Bob> .
<Alice> <不喜欢> <Eve> .
<Bob> <关注> <Alice> .
<Bob> <喜欢> <Eve> .
<Carol> <关注> <Bob> .
<Carol> <喜欢> <Bob> .
<Carol> <不喜欢> <Francis> .
<Dave> <关注> <Alice> .
<Dave> <关注> <Eve> .
<Dave> <不喜欢> <Francis> .
<Eve> <喜欢> <Carol> .
<Francis> <喜欢> <Carol> .
<Francis> <不喜欢> <Dave> .
<Francis> <不喜欢> <Eve> .
示例:
查询Francis或Alice不喜欢的人,并在返回的结果中分类标记:
select ?a ?x where
{
{
BIND("Francis" as ?a).
<Francis> <不喜欢> ?x .
}
UNION
{
BIND("Alice" as ?a).
<Alice> <不喜欢> ?x.
}
}
最终的结果输出如下(为方便阅读,省略了字符串最外层的双引号和内部双引号转义):
{
"bindings": [
{
"a": {"type": "literal", "value": "Francis"},
"x": {"type": "uri", "value": "Eve"}
},
{
"a": {"type": "literal", "value": "Francis"},
"x": {"type": "uri", "value": "Dave"}
},
{
"a": {"type": "literal", "value": "Alice"},
"x": {"type": "uri", "value": "Eve"}
}
]
}
后续还会进一步完善BIND表达式/函数,比如支持实体对象的赋值绑定等。