Hi Ivan,
thanks a lot for your answer.
Funnily enough your query version does not make a difference. The query
takes about the same time.
Sadly I cannot add any conditions on the graph since all is in different
graphs. I know this is not great for Virtuoso but we use graphs for
metadata on statements.
Can you offer an explanation why the query is that much slower? It seems
like such a simple condition.
Cheers,
Sebastian
On 11/19/2010 09:52 PM, Ivan Mikhailov wrote:
> Hello Sebastian,
>
> One variant to check is
>
> select distinct
> ?r
> (bif:concat(bif:search_excerpt(bif:vector('lego'), ?v2))) as
> ?_n_f_t_m_ex_
> where {
> {{select distinct ?r ?v2 where
> { ?r ?v1 ?v2 .
> ?v2 bif:contains 'lego' .
> ?r nao:userVisible "1"^^xsd:int .
> } limit 10 } }
> UNION
> {{select distinct ?r ?v2 where
> { ?r ?v1 ?v3 .
> ?v3 ?v4 ?v2 .
> ?v4 rdfs:subPropertyOf rdfs:label .
> ?v2 bif:contains 'lego' .
> ?r nao:userVisible "1"^^xsd:int .
> } LIMIT 10 } }
> } LIMIT 10
>
> because in this case no one side of union will needlessly generate data that
> does not fit LIMIT 10.
>
> Next optimization is to give a hint that some triples should reside in one
> graph, if this is applicable to the task in question.
> E.g. if both ?r ?v1 ?v2 . and ?r nao:userVisible "1"^^xsd:int . are supposed
> to be in same graph,
>
> ?r ?v1 ?v2 .
> ?v2 bif:contains 'lego' .
> ?r nao:userVisible "1"^^xsd:int .
>
> can be replaced with
>
> graph ?g { ?r ?v1 ?v2 .
> ?r nao:userVisible "1"^^xsd:int .
> ?v2 bif:contains 'lego' . }
>
> Best Regards,
>
> Ivan Mikhailov
> OpenLink Software
> http://virtuoso.openlinksw.com
>
>
> On Fri, 2010-11-19 at 19:25 +0100, Sebastian Trüg wrote:
>> Hi list,
>>
>> as always my question is about query performance.
>> The following very simple query performs very well on a V6.3rc1 with
>> default indexes:
>>
>> select distinct
>> ?r
>> (bif:concat(bif:search_excerpt(bif:vector('lego'), ?v2))) as
>> ?_n_f_t_m_ex_
>> where {
>> { ?r ?v1 ?v2 .
>> ?v2 bif:contains 'lego' .
>> }
>> UNION
>> { ?r ?v1 ?v3 .
>> ?v3 ?v4 ?v2 .
>> ?v4 rdfs:subPropertyOf rdfs:label .
>> ?v2 bif:contains 'lego' .
>> } .
>> } LIMIT 10
>>
>> However, in Nepomuk we need to hide certain types from the user. To that
>> end we have the nao:userVisible property. Adding that to the query,
>> however, slows down the query considerably:
>>
>>
>> select distinct
>> ?r
>> (bif:concat(bif:search_excerpt(bif:vector('lego'), ?v2))) as
>> ?_n_f_t_m_ex_
>> where {
>> { ?r ?v1 ?v2 .
>> ?v2 bif:contains 'lego' .
>> }
>> UNION
>> { ?r ?v1 ?v3 .
>> ?v3 ?v4 ?v2 .
>> ?v4 rdfs:subPropertyOf rdfs:label .
>> ?v2 bif:contains 'lego' .
>> } .
>> ?r nao:userVisible "1"^^xsd:int .
>> } LIMIT 10
>>
>> Suddenly a query which was done in no time takes up to several seconds.
>> This confuses me as I would think simply adding one condition on the
>> results should not make such a difference.
>>
>> Any ideas?
>>
>> Cheers,
>> Sebastian
>>
>> ------------------------------------------------------------------------------
>> Beautiful is writing same markup. Internet Explorer 9 supports
>> standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3.
>> Spend less time writing and rewriting code and more time creating great
>> experiences on the web. Be a part of the beta today
>> http://p.sf.net/sfu/msIE9-sfdev2dev
>> _______________________________________________
>> Virtuoso-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/virtuoso-users
>
>
>