【问题标题】:Bind a variable in query using a Transformer使用 Transformer 在查询中绑定变量
【发布时间】:2016-02-18 02:00:07
【问题描述】:

我想在查询中绑定特定的主题变量。例如,假设 Op 是subOp,下面是我尝试使用的转换器。但是,最后,当我打印query 时,我的主题变量是相同的并且没有被绑定。为什么?

Op BindedQueryWithKey = Transformer.transform(new TransformCopy(){
        public Op transform(OpTriple optp, Op subOp){
            Triple tp=optp.getTriple();
            if (tp.getSubject().isVariable() && tp.getSubject().toString().equalsIgnoreCase("userid"))
                {Triple newtp=new Triple(nodeId, tp.getPredicate(), tp.getObject());
            return new OpTriple(newtp);}
            else return optp;
        }
    }, subOp);

    Query query = OpAsQuery.asQuery(BindedQueryWithKey);

【问题讨论】:

  • 作为字符串的主题不太可能是“userid”(相对 URI)。在代码中依赖 toString 也是不好的。检查它是一个 URI 并在节点上使用 getURI() 并检查绝对 URI。

标签: java jena transformer


【解决方案1】:

您没有覆盖TransformCopy 操作,而是添加了一个永远不会被Transformer.transform 调用的新操作。

签名是public Op transform(OpTriple opTriple)

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多