如何解决具有可选和过滤器的Sparql查询
我编写了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 举报,一经查实,本站将立刻删除。