You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by Claude Warren <cl...@xenei.com> on 2017/12/26 13:46:18 UTC

QueryTripleIterator not accept Node_Variables

QueryTripleIterator at line 87 calls Var.isVar(node) which throws an
exception if the node is a Node_Variable.  But based code following line 87
I think that Node_Variable should be accepted.

{noformat}
        private static Node substitute(Node node, Binding binding)
        {
            if ( Var.isVar(node) ) // <---- line 87
            {
                Node x = binding.get(Var.alloc(node)) ;
                if ( x != null )
                    return x ;
            }
            return node ;
        }
{noformat}

I think that perhaps the if check should  be

if (node instanceof Node_Variable)

As with a lot of this code I am not certain and want to verify before I
change anything.

Claude
-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Re: QueryTripleIterator not accept Node_Variables

Posted by Claude Warren <cl...@xenei.com>.
I thought that might be the case.

It got in via the UpdateBuilder.  I have added code to the UpdateBuilder
and checks elsewhere in the builder package to try and ensure that it does
not happen again.

Claude

On Tue, Dec 26, 2017 at 5:34 PM, Andy Seaborne <an...@apache.org> wrote:

>
>
> On 26/12/17 14:24, Claude Warren wrote:
>
>> if this method does not have to account for null node values then
>>
>> node.isVariable() would suffice.
>>
>> On Tue, Dec 26, 2017 at 1:46 PM, Claude Warren <cl...@xenei.com> wrote:
>>
>> QueryTripleIterator at line 87 calls Var.isVar(node) which throws an
>>> exception if the node is a Node_Variable.
>>>
>>
> QueryIterTriplePattern?
> Or some class you have created?
>
> QueryIterTriplePattern is used for solving a single step of a basic graph
> pattern.
>
> Var is a subclass of Node_Variable.  ARQ works with Var, not Node_Variable.
>
> The exception captures an internal error condition.
>
> How did it get in?
>
>  But based code following line 87
>>> I think that Node_Variable should be accepted.
>>>
>>
>     Andy
>
>
>>> {noformat}
>>>          private static Node substitute(Node node, Binding binding)
>>>          {
>>>              if ( Var.isVar(node) ) // <---- line 87
>>>              {
>>>                  Node x = binding.get(Var.alloc(node)) ;
>>>                  if ( x != null )
>>>                      return x ;
>>>              }
>>>              return node ;
>>>          }
>>> {noformat}
>>>
>>> I think that perhaps the if check should  be
>>>
>>> if (node instanceof Node_Variable)
>>>
>>> As with a lot of this code I am not certain and want to verify before I
>>> change anything.
>>>
>>> Claude
>>> --
>>> I like: Like Like - The likeliest place on the web
>>> <http://like-like.xenei.com>
>>> LinkedIn: http://www.linkedin.com/in/claudewarren
>>>
>>>
>>
>>
>>


-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren

Re: QueryTripleIterator not accept Node_Variables

Posted by Andy Seaborne <an...@apache.org>.

On 26/12/17 14:24, Claude Warren wrote:
> if this method does not have to account for null node values then
> 
> node.isVariable() would suffice.
> 
> On Tue, Dec 26, 2017 at 1:46 PM, Claude Warren <cl...@xenei.com> wrote:
> 
>> QueryTripleIterator at line 87 calls Var.isVar(node) which throws an
>> exception if the node is a Node_Variable.

QueryIterTriplePattern?
Or some class you have created?

QueryIterTriplePattern is used for solving a single step of a basic 
graph pattern.

Var is a subclass of Node_Variable.  ARQ works with Var, not 
Node_Variable.

The exception captures an internal error condition.

How did it get in?

>>  But based code following line 87
>> I think that Node_Variable should be accepted.

     Andy

>>
>> {noformat}
>>          private static Node substitute(Node node, Binding binding)
>>          {
>>              if ( Var.isVar(node) ) // <---- line 87
>>              {
>>                  Node x = binding.get(Var.alloc(node)) ;
>>                  if ( x != null )
>>                      return x ;
>>              }
>>              return node ;
>>          }
>> {noformat}
>>
>> I think that perhaps the if check should  be
>>
>> if (node instanceof Node_Variable)
>>
>> As with a lot of this code I am not certain and want to verify before I
>> change anything.
>>
>> Claude
>> --
>> I like: Like Like - The likeliest place on the web
>> <http://like-like.xenei.com>
>> LinkedIn: http://www.linkedin.com/in/claudewarren
>>
> 
> 
> 

Re: QueryTripleIterator not accept Node_Variables

Posted by Claude Warren <cl...@xenei.com>.
if this method does not have to account for null node values then

node.isVariable() would suffice.

On Tue, Dec 26, 2017 at 1:46 PM, Claude Warren <cl...@xenei.com> wrote:

> QueryTripleIterator at line 87 calls Var.isVar(node) which throws an
> exception if the node is a Node_Variable.  But based code following line 87
> I think that Node_Variable should be accepted.
>
> {noformat}
>         private static Node substitute(Node node, Binding binding)
>         {
>             if ( Var.isVar(node) ) // <---- line 87
>             {
>                 Node x = binding.get(Var.alloc(node)) ;
>                 if ( x != null )
>                     return x ;
>             }
>             return node ;
>         }
> {noformat}
>
> I think that perhaps the if check should  be
>
> if (node instanceof Node_Variable)
>
> As with a lot of this code I am not certain and want to verify before I
> change anything.
>
> Claude
> --
> I like: Like Like - The likeliest place on the web
> <http://like-like.xenei.com>
> LinkedIn: http://www.linkedin.com/in/claudewarren
>



-- 
I like: Like Like - The likeliest place on the web
<http://like-like.xenei.com>
LinkedIn: http://www.linkedin.com/in/claudewarren