You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by "Rupert Westenthaler (JIRA)" <ji...@apache.org> on 2013/11/06 12:58:26 UTC

[jira] [Created] (STANBOL-1204) Entityhub SPARQL query util builds invalid FILTER for TextConstraints with multiple OR values and language parameter(s)

Rupert Westenthaler created STANBOL-1204:
--------------------------------------------

             Summary: Entityhub SPARQL query util builds invalid FILTER for TextConstraints with multiple OR values and language parameter(s)
                 Key: STANBOL-1204
                 URL: https://issues.apache.org/jira/browse/STANBOL-1204
             Project: Stanbol
          Issue Type: Bug
            Reporter: Rupert Westenthaler
            Assignee: Rupert Westenthaler
             Fix For: 0.12.0


The ongoing work on STANBOL-1202 revealed a bug related to TextConstraints as follows

        FieldQuery query = yard.getQueryFactory().createFieldQuery();
        query.setConstraint(field, new TextConstraint(
                Arrays.asList("value1", "value2"), "en"));

The SPARQL query util will encode such a constraint in SPARQL such as

    SELECT [..]
    WHERE { 
        ?id <urn:yard.test:find:field.text> ?v_1  
             FILTER(regex(str(?v_1),"^value1$","i") || regex(str(?v_1),"^value2$","i") && (lang(?v_1) = "en")) . 
    }

The FILTER part is wrong is it will apply the `(lang(?v_1) = "en"))` is only applied for "value2" while "value1" is accepted for any lanugage.

The correct FILTER part would need to group all regex parts with an additional bracket before combining it with the language restriction.



--
This message was sent by Atlassian JIRA
(v6.1#6144)