Contains() bug in FCT


I would like to use the <cond/> filter for the <property> and <property-of> elements in FCT query, but for this input:

<query timeout="15010"><text property="">Star Wars</text><class iri=""/><property iri=""><cond type="contains">tatooine</cond></property><property iri=""></property><property iri=""></property><view limit="30" type="properties-in" offset="0"></view></query>

I get the following error:

    <message>Error while executing query</message>
    <diagnostics>SR468: contains() can not be called as plain built-in function, it&#39;s a macro handled by SQL compiler</diagnostics>

I found this solution:

Please replace bif:contains with contains. Basically,
…FILTER(bif:contains(?label, “‘india’”)… becomes
…FILTER(contains(?label, “‘india’”)…

And I see lines like this is facets.sql:

      if ('no' <> neg)
          http (sprintf (' ?s%d bif:contains ''%s'' .', this_s, txs_qr), txt);
          http (sprintf (' filter (! bif:contains (?s%d, ''"%s"'')) .', this_s, val), txt);

Is it possible to fix this and deploy to a server so that we can begin testing the filter functionality of Record list and CTRL list in the VIOS PoC?


@imikhailov @kidehen

Can we also get this fix in.

I would also like to add one more request. There is “filter not exist” logic at line 1284 (for <class> element), and line 1354 (for <property>), but none for <property-of>. Can we please add ./@exclude attribute to <property-of> element?