Hello Hughes,

I would say that this can be "any" number, but for the application we 
have I would expect it to be in the order of tens of thousands or even 
more...

Our problem is the following: we observed that certain of our SPARQL 
queries have subqueries (that return IDs) that run rather slow (because 
of a slow bif:contains full-text-search).  We therefore 
'migrated'/'copied'/'flattened' some of our data to another 
technology/database/store that allows for faster textual search. 
Querying this database results in a list of IDs, and these IDs are then 
'injected' in a SPARQL query (we simply create a SPARQL query string 
with all these IDs in the FILTER command).

Apparently, we are limited to filtering 4094 IDs and I don't see a way 
to overcome this if the subquery returns more.  Could there be a way to 
work-around this limitation at SPARQL level?

I also don't know if the way we tackle the problem right now is the best 
approach.  If anyone has experience with this kind of setting, feel free 
to share us your thoughts!

Kind regards,
Bart


On 2014-07-11 04:33, Hugh Williams wrote:
> Hi Cart,
>
> I have been able to recreate this and reported to development for
> comment. How many such Id's are you seeking to "inject" in the FILTER
> statement ?
>
> Best Regards
> Hugh Williams
>
> On 10 Jul 2014, at 15:01, Bart Vandewoestyne
> <bart.vandewoest...@telenet.be <mailto:bart.vandewoest...@telenet.be>>
> wrote:
>
>> Hello list,
>>
>> I have a SPARQL query that gets constructed as follows: first, using
>> some other technology, i obtain a comma-separated list of id's and
>> 'inject' them in the FILTER statement of a SPARQL query, something like
>> this:
>>
>>             FILTER (?id in (<http://someid_1>,
>>                             <http://someid_2>,
>>                             <http://someid_3>,
>>                             ...
>>                             <http://someid_N>))
>>
>> where N can become 'large' (whatever that may be).
>>
>> After performing a small test, I noticed that 4094 is the maximum number
>> of id's that I can insert in my FILTER statement.  When trying with 4095
>> id's, I get:
>>
>> Virtuoso 37000 Error SP030: SPARQL compiler, line 4102: Too many
>> arguments of a standard built-in function in operator() at ')' before ')'
>>
>> Is there a way to overcome this problem?  Or are there other
>> ways/methods of 'injecting' strings/lists/data like this in SPARQL
>> queries?
>>
>> Kind regards,
>> Bart

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck&#174;
Code Sight&#153; - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users

Reply via email to