Hi Steven,

I did look at the source code and I think the only case where this  
case is reached is if an argument is null. The execution order of  
SPARQL is often non-deterministic, and I believe that even if you  
place guard clauses (FILTERS) before a LET statements, the engine may  
still reach those lines. Therefore the function itself should be  
prepared to handle null values, and my code as well. I noticed that  
null values were not handled well in my SPINx implementation, but I  
have fixed this for the upcoming release. So your particular problem  
might go away in the next build, but you may still want to change your  
query to be more tolerant. One way would be to wrap each critical  
argument with something like an smf:if(bound(?var), ?var, my:dummy)  
call will pass in some other (non-null) value in either case.

Thanks,
Holger




On Jun 8, 2009, at 1:20 PM, Cambria, Steven wrote:

> I have two different javascript functions that I’m calling in a  
> SPARQL query from the editor pane. The first round of calls work  
> fine, but anytime I attempt to call the functions more than once in  
> the same query, I receive a null pointer exception. I’ve confirmed  
> that the variables I’m passing in are not null by running a select  
> query on those variables w/o any javascript calls, and also by  
> filtering them out if they’re not bound.
>
> I’ve copied the composer’s stack trace below.
>
> java.lang.reflect.InvocationTargetException
> at org.topbraidcomposer.sparql.view.SPARQLView$10.run(Unknown Source)
> at org.topbraidcomposer.core.util.ThreadUtil$1$1.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.IllegalArgumentException: Error in JavaScript  
> call: java.lang.NullPointerException
> at org.topbraid.spinx.javascript.JavaScriptFunction.exec(Unknown  
> Source)
> at org.topbraid.sparql.functions.AbstractFunction.exec(Unknown Source)
> at com.hp.hpl.jena.sparql.expr.E_Function.eval(E_Function.java:63)
> at com.hp.hpl.jena.sparql.core.VarExprList.get(VarExprList.java:60)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.iterator.QueryIterAssign.accept(QueryIterAssign.java: 
> 42)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .iterator 
> .QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java: 
> 54)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .iterator 
> .QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:85)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .iterator 
> .QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:54)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
> at  
> com.hp.hpl.jena.sparql.algebra.table.TableN.materialize(TableN.java: 
> 36)
> at com.hp.hpl.jena.sparql.algebra.table.TableN.<init>(TableN.java:31)
> at  
> com.hp.hpl.jena.sparql.algebra.TableFactory.create(TableFactory.java: 
> 37)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .main.iterator.QueryIterJoinBase.<init>(QueryIterJoinBase.java:35)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .main.iterator.QueryIterLeftJoin.<init>(QueryIterLeftJoin.java:18)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java: 
> 227)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java: 
> 100)
> at  
> com.hp.hpl.jena.sparql.algebra.op.OpLeftJoin.visit(OpLeftJoin.java:43)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java: 
> 102)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java: 
> 280)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java: 
> 128)
> at com.hp.hpl.jena.sparql.algebra.op.OpFilter.visit(OpFilter.java:79)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java: 
> 102)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java: 
> 350)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java: 
> 177)
> at com.hp.hpl.jena.sparql.algebra.op.OpLabel.visit(OpLabel.java:61)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java: 
> 102)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:78)
> at com.hp.hpl.jena.sparql.engine.main.QC.execute(QC.java:37)
> at  
> com 
> .hp 
> .hpl 
> .jena.sparql.engine.main.QueryEngineMain.eval(QueryEngineMain.java:42)
> at  
> com 
> .hp 
> .hpl 
> .jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java: 
> 102)
> at  
> com 
> .hp 
> .hpl.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java: 
> 91)
> at com.hp.hpl.jena.sparql.engine.main.QueryEngineMain 
> $1.create(QueryEngineMain.java:67)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.QueryExecutionBase.getPlan(QueryExecutionBase.java:284)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .QueryExecutionBase.startQueryIterator(QueryExecutionBase.java:261)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine.QueryExecutionBase.execResultSet(QueryExecutionBase.java:266)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.QueryExecutionBase.execSelect(QueryExecutionBase.java: 
> 94)
> at org.topbraidcomposer.sparql.view.SPARQLView$10.runSelect(Unknown  
> Source)
> ... 3 more
> Caused by: java.lang.NullPointerException
> at org.topbraid.spinx.javascript.JavaScriptFunction.node2Arg(Unknown  
> Source)
> ... 44 more
> Root exception:
> java.lang.IllegalArgumentException: Error in JavaScript call:  
> java.lang.NullPointerException
> at org.topbraid.spinx.javascript.JavaScriptFunction.exec(Unknown  
> Source)
> at org.topbraid.sparql.functions.AbstractFunction.exec(Unknown Source)
> at com.hp.hpl.jena.sparql.expr.E_Function.eval(E_Function.java:63)
> at com.hp.hpl.jena.sparql.core.VarExprList.get(VarExprList.java:60)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.iterator.QueryIterAssign.accept(QueryIterAssign.java: 
> 42)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .iterator 
> .QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java: 
> 54)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .iterator 
> .QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:85)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .iterator 
> .QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:54)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:69)
> at  
> com.hp.hpl.jena.sparql.algebra.table.TableN.materialize(TableN.java: 
> 36)
> at com.hp.hpl.jena.sparql.algebra.table.TableN.<init>(TableN.java:31)
> at  
> com.hp.hpl.jena.sparql.algebra.TableFactory.create(TableFactory.java: 
> 37)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .main.iterator.QueryIterJoinBase.<init>(QueryIterJoinBase.java:35)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .main.iterator.QueryIterLeftJoin.<init>(QueryIterLeftJoin.java:18)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java: 
> 227)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java: 
> 100)
> at  
> com.hp.hpl.jena.sparql.algebra.op.OpLeftJoin.visit(OpLeftJoin.java:43)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java: 
> 102)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java: 
> 280)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java: 
> 128)
> at com.hp.hpl.jena.sparql.algebra.op.OpFilter.visit(OpFilter.java:79)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java: 
> 102)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java: 
> 350)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.visit(ExecutionDispatch.java: 
> 177)
> at com.hp.hpl.jena.sparql.algebra.op.OpLabel.visit(OpLabel.java:61)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.main.ExecutionDispatch.exec(ExecutionDispatch.java:33)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.executeOp(OpExecutor.java: 
> 102)
> at  
> com 
> .hp.hpl.jena.sparql.engine.main.OpExecutor.execute(OpExecutor.java:78)
> at com.hp.hpl.jena.sparql.engine.main.QC.execute(QC.java:37)
> at  
> com 
> .hp 
> .hpl 
> .jena.sparql.engine.main.QueryEngineMain.eval(QueryEngineMain.java:42)
> at  
> com 
> .hp 
> .hpl 
> .jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.java: 
> 102)
> at  
> com 
> .hp 
> .hpl.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java: 
> 91)
> at com.hp.hpl.jena.sparql.engine.main.QueryEngineMain 
> $1.create(QueryEngineMain.java:67)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.QueryExecutionBase.getPlan(QueryExecutionBase.java:284)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine 
> .QueryExecutionBase.startQueryIterator(QueryExecutionBase.java:261)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql 
> .engine.QueryExecutionBase.execResultSet(QueryExecutionBase.java:266)
> at  
> com 
> .hp 
> .hpl 
> .jena 
> .sparql.engine.QueryExecutionBase.execSelect(QueryExecutionBase.java: 
> 94)
> at org.topbraidcomposer.sparql.view.SPARQLView$10.runSelect(Unknown  
> Source)
> at org.topbraidcomposer.sparql.view.SPARQLView$10.run(Unknown Source)
> at org.topbraidcomposer.core.util.ThreadUtil$1$1.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.NullPointerException
> at org.topbraid.spinx.javascript.JavaScriptFunction.node2Arg(Unknown  
> Source)
> ... 44 more
>
> Thanks,
>
> Steve
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TopBraid Composer Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/topbraid-composer-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to