clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reto Bachmann-Gmür <r...@apache.org>
Subject Re: ERROR: Quad: object cannot be null
Date Mon, 15 Jul 2013 13:16:33 GMT
Hi

I'm just realizing that adding a FOM clause doesn't work for the update queries.

 So i'm wondering how to best specify the default-graph URI o a per
query basis? We should find out how fuseki support the
default-graph-uri.

Cheers,
Reto



On Sun, Jul 14, 2013 at 7:12 PM, Reto Bachmann-Gmür <reto@wymiwyg.com> wrote:
> Hi Minto
>
> I'm sorry for having introduced this problem. I just noticed that
> BaseTdbTcProvider completely ignored the specified default graph. Not
> sure what I thought exacly setting it to null. I guess it was the
> incomplete ste of setting it to the actually wanted default graph.
>
> The problem is that by the jena design we would need to prevent
> concurrent queries with different default graphs. So I think it might
> be better to add a FROM-clause to the query if the query doesn't
> already has one. This would require again some parsing. The preparser
> seems to be the place to do this. WDYT, can we do a solution that
> actually provided support for the specified default graph or should we
> first just provide a release that ignores it without NPE?
>
>
> Cheers,
> Reto
>
> On Sun, Jul 14, 2013 at 11:58 AM, Minto van der Sluis <minto@xup.nl> wrote:
>> Hi Reto,
>>
>> If I am correct the NPE I discovered will always happens for fastlaned
>> queries on Jena TDB based TcProviders due to the following line present
>> in BaseTdbTcProvider.java:
>>
>>     getDataset().setDefaultModel(null);
>>
>> The NPE can be clearly seen in DatasetImpl if model is null:
>>
>>     @Override
>>     public void setDefaultModel(Model model)
>>     {
>>         // Assumes single writer.
>>         removeFromCache(dsg.getDefaultGraph()) ;
>>         addToCache(model) ;
>>         dsg.setDefaultGraph(model.getGraph()) ;
>>     }
>>
>> Did you have anything special in mind when you added the null model?
>>
>> Regards,
>>
>> Minto
>>
>> Op 12-7-2013 23:50, Reto Bachmann-Gmür schreef:
>>> Thanks Minto. I would rather not withdraw the release candidate but
>>> have a new release very soon (max a couple of weeks).
>>>
>>> Reto
>>>
>>> On Fri, Jul 12, 2013 at 10:48 PM, Minto van der Sluis <minto@xup.nl> wrote:
>>>> Fixed this with commit r1502677 (CLEREZZA-802)
>>>>
>>>> Please have a close look. Might need to be part of the pending release
>>>> as well.
>>>>
>>>> Regards,
>>>>
>>>> Minto
>>>>
>>>> Op 12-7-2013 18:14, Minto van der Sluis schreef:
>>>>> This time I end up with an NPE, see stack below.
>>>>>
>>>>> My changes resulted in the following
>>>>>
>>>>>     public Object executeSparqlQuery(String query, TripleCollection
>>>>> defaultGraph, boolean forceFastlane) throws ParseException {
>>>>>         TcProvider singleTargetTcProvider = null;
>>>>>         if (forceFastlane) {
>>>>>             singleTargetTcProvider = getSingleTargetTcProvider();
>>>>>         } else {
>>>>>             final UriRef defaultGraphName = new
>>>>> UriRef("urn:x-temp:/kjsfadfhfasdffds");
>>>>>             SparqlPreParser sparqlPreParser = new SparqlPreParser(this);
>>>>>             final Set<UriRef> referencedGraphs =
>>>>> sparqlPreParser.getReferredGraphs(query, defaultGraphName);
>>>>>             if ((referencedGraphs != null) &&
>>>>> (!referencedGraphs.contains(defaultGraphName))) {
>>>>>                 singleTargetTcProvider =
>>>>> getSingleTargetTcProvider(referencedGraphs);
>>>>>             }
>>>>>         }
>>>>>
>>>>>         if ((singleTargetTcProvider != null) && (singleTargetTcProvider
>>>>> instanceof QueryableTcProvider)) {
>>>>>             return
>>>>> ((QueryableTcProvider)singleTargetTcProvider).executeSparqlQuery(query,
>>>>> null);
>>>>>         }
>>>>>         final QueryEngine queryEngine = this.queryEngine;
>>>>>         if (queryEngine != null) {
>>>>>             return queryEngine.execute(this, defaultGraph, query);
>>>>>         } else {
>>>>>             throw new NoQueryEngineException();
>>>>>         }
>>>>>     }
>>>>>
>>>>>    private TcProvider getSingleTargetTcProvider() {
>>>>>         return providerList.first();
>>>>>     }
>>>>>
>>>>> I guess the following like in BaseTdbTcProvider.executeSparqlQuery()
is
>>>>> the culprit:
>>>>>
>>>>>        getDataset().setDefaultModel(null);
>>>>>
>>>>> Stacktrace:
>>>>>
>>>>> java.lang.NullPointerException
>>>>>     at
>>>>> com.hp.hpl.jena.sparql.core.DatasetImpl.addToCache(DatasetImpl.java:259)
>>>>>     at
>>>>> com.hp.hpl.jena.sparql.core.DatasetImpl.setDefaultModel(DatasetImpl.java:214)
>>>>>     at
>>>>> org.apache.clerezza.rdf.jena.tdb.storage.BaseTdbTcProvider.executeSparqlQuery(BaseTdbTcProvider.java:39)
>>>>>     at
>>>>> org.apache.clerezza.rdf.jena.tdb.storage.ScalableSingleTdbDatasetTcProvider.executeSparqlQuery(ScalableSingleTdbDatasetTcProvider.java:81)
>>>>>     at
>>>>> org.apache.clerezza.rdf.core.access.TcManager.executeSparqlQuery(TcManager.java:310)
>>>>>     at
>>>>> org.apache.clerezza.rdf.core.access.TcManager.executeSparqlQuery(TcManager.java:282)
>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>> Method)[:1.7.0_17]
>>>>>     at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_17]
>>>>>     at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_17]
>>>>>     at java.lang.reflect.Method.invoke(Method.java:601)[:1.7.0_17]
>>>>>     at
>>>>> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)[12:org.apache.aries.proxy.impl:1.0.0]
>>>>>     at
>>>>> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)[12:org.apache.aries.proxy.impl:1.0.0]
>>>>>     at
>>>>> org.apache.clerezza.rdf.core.access.$TcManager10360330.executeSparqlQuery(Unknown
>>>>> Source)[181:org.apache.clerezza.rdf.core:0.13.0.SNAPSHOT]
>>>>>     at
>>>>> nl.overheid.stelsel.digimelding.astore.storage.clerezza.ClerezzaStorageProvider.query(ClerezzaStorageProvider.java:250)[209:astore-storage-clerezza:0.7.0.SNAPSHOT]
>>>>>
>>>>
>>>> --
>>>> ir. ing. Minto van der Sluis
>>>> Software innovator / renovator
>>>> Xup BV
>>>>
>>>> Mobiel: +31 (0) 626 014541
>>>>
>>>
>>
>>
>> --
>> ir. ing. Minto van der Sluis
>> Software innovator / renovator
>> Xup BV
>>
>> Mobiel: +31 (0) 626 014541
>>

Mime
View raw message