问题描述
我编写了sparql查询,其中如果我绑定一个变量($ company_parameter = XXX),则结果是属于公司XXX内部人员的所有文档;如果我不绑定而执行查询,它将返回数据库中的所有文档(甚至包括那些不在任何公司工作的人)。
查询就是这样,我在其中添加或不添加类似
BIND(XXX as ?company_parameter) .
取决于我想要的结果:
SELECT
?doc
?person
?company_label
WHERE {
?doc rdf:type <document> .
OPTIONAL {
?doc <belongsTo> ?person .
OPTIONAL {
?person <worksin> ?company .
?company rdf:type <company> .
?company rdfs:label ?company_label .
}
}
FILTER (!BOUND($company_parameter) || $company_parameter = ?company) .
}
当我未指定BIND时,查询工作正常 当我指定BIND时会出现问题,因为结果包含指定公司的所有记录加上一些但没有公司的记录。
这应该发生吗?
在比较参数之前,是否应该始终向过滤器添加BOUND(?company)
之类的支票?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)