Re: Problem with simple query

2016-04-16 Thread james anderson
good morning,

> On 2016-04-14, at 11:11, Mikael Pesonen  wrote:
> 
> 
> Hi,
> 
> im matching strings in different graphs and this should do the trick:

a more complete statement of your intent would help, but going by the query 
text, it appears that your goal is to retrieve all skos:prefLabels values from 
the  graph and, for those which also have a 
similar label in any graph, to augment the solution(s) with the respective 
graph name and label value.

if that is the intent, the first query cannot succeed: as another response 
noted, ?prefLabel is unbound in the optional clause.

the second query demonstrates that the semantics of an optional operator 
accomplishes some of your intent, as it correlates the values where the 
correspondence is based on term identity.

if you intend to relax that constraint, you will need to either produce an 
appropriate binding for the corresponding variable within the optional clause, 
as in

   BIND (lcase(str(?label2)) as ?prefLabel)

and allow the optional to produce your intended result, or perform the filter 
in a scope which comprises the initial ?prefLabel binding, but with logic which 
emulates that of the optional operator, for example

  FILTER ( ( !bound(?label2) ) || lcase(str(?prefLabel)) = lcase(str(?label2)) )

whereby, as another response noted, the optional with just the single pattern, 
will act as a cross-join.
this argues for the former approach.

best regards, from berlin,

> 
> SELECT ?prefLabel ?s2
> WHERE {
> GRAPH 
> {
>   ?s skos:prefLabel ?prefLabel .
> }
> OPTIONAL {
>   GRAPH ?graph
>   {
> ?s2 skos:prefLabel ?label2
> 
> FILTER ( lcase(str(?prefLabel)) = lcase(str(?label2)) )
>   }
> }
> }
> 
> but im not getting any results. There are plenty of matches in store and this 
> returns them (case sensitive match)
> 
> SELECT ?prefLabel ?s2
> WHERE {
> GRAPH 
> {
>   ?s skos:prefLabel ?prefLabel .
> }
> OPTIONAL {
>   GRAPH ?graph
>   {
> ?s2 skos:prefLabel ?prefLabel
>   }
> }
> }
> 
> 
> Im I using FILTER wrong way or could it be a bug in search engine?
> 
> Br,
> Mikael
> 
> -- 
> www.lingsoft.fi
> 
> Speech Applications - Language Management - Translation - Reader's and 
> Writer's Tools - Text Tools - E-books and M-books
> 
> Mikael Pesonen
> System Engineer
> 
> e-mail: mikael.peso...@lingsoft.fi
> Tel. +358 2 279 3300
> 
> Time zone: GMT+2
> 
> Helsinki Office
> Eteläranta 10
> FI-00130 Helsinki
> FINLAND
> 
> Turku Office
> Linnankatu 10 A
> FI-20100 Turku
> FINLAND
> 

---
james anderson | ja...@dydra.com | http://dydra.com







Re: Problem with simple query

2016-04-16 Thread Claude Warren
Given that the  two queries have no common variables, wouldn't removing the
optional be more performant?  It seems like the optional will create extra
null results for  triple, then do the cross product
with the same query from the other graph.   I think that removing the
optional will reduce the number of results in one side of the cross product.


Claude

On Thu, Apr 14, 2016 at 10:57 AM, Mikael Pesonen  wrote:

>
> Thanks, that worked!
>
> Br,
> Mikael
>
>
>
> On 14.4.2016 12:36, Martynas Jusevičius wrote:
>
>> My guess would be that because of SPARQL bottom-up semantics,
>> ?prefLabel is undefined at the point where you are applying it. Try
>> moving it out of OPTIONAL.
>>
>> On Thu, Apr 14, 2016 at 11:11 AM, Mikael Pesonen
>>  wrote:
>>
>>> Hi,
>>>
>>> im matching strings in different graphs and this should do the trick:
>>>
>>> SELECT ?prefLabel ?s2
>>> WHERE {
>>>GRAPH 
>>>{
>>>  ?s skos:prefLabel ?prefLabel .
>>>}
>>>OPTIONAL {
>>>  GRAPH ?graph
>>>  {
>>>?s2 skos:prefLabel ?label2
>>>
>>>FILTER ( lcase(str(?prefLabel)) = lcase(str(?label2)) )
>>>  }
>>>}
>>> }
>>>
>>> but im not getting any results. There are plenty of matches in store and
>>> this returns them (case sensitive match)
>>>
>>> SELECT ?prefLabel ?s2
>>> WHERE {
>>>GRAPH 
>>>{
>>>  ?s skos:prefLabel ?prefLabel .
>>>}
>>>OPTIONAL {
>>>  GRAPH ?graph
>>>  {
>>>?s2 skos:prefLabel ?prefLabel
>>>  }
>>>}
>>> }
>>>
>>>
>>> Im I using FILTER wrong way or could it be a bug in search engine?
>>>
>>> Br,
>>> Mikael
>>>
>>> --
>>> www.lingsoft.fi
>>>
>>> Speech Applications - Language Management - Translation - Reader's and
>>> Writer's Tools - Text Tools - E-books and M-books
>>>
>>> Mikael Pesonen
>>> System Engineer
>>>
>>> e-mail: mikael.peso...@lingsoft.fi
>>> Tel. +358 2 279 3300
>>>
>>> Time zone: GMT+2
>>>
>>> Helsinki Office
>>> Eteläranta 10
>>> FI-00130 Helsinki
>>> FINLAND
>>>
>>> Turku Office
>>> Linnankatu 10 A
>>> FI-20100 Turku
>>> FINLAND
>>>
>>>
> --
> www.lingsoft.fi
>
> Speech Applications - Language Management - Translation - Reader's and
> Writer's Tools - Text Tools - E-books and M-books
>
> Mikael Pesonen
> System Engineer
>
> e-mail: mikael.peso...@lingsoft.fi
> Tel. +358 2 279 3300
>
> Time zone: GMT+2
>
> Helsinki Office
> Eteläranta 10
> FI-00130 Helsinki
> FINLAND
>
> Turku Office
> Linnankatu 10 A
> FI-20100 Turku
> FINLAND
>
>


-- 
I like: Like Like - The likeliest place on the web

LinkedIn: http://www.linkedin.com/in/claudewarren


Re: Problem with simple query

2016-04-14 Thread Mikael Pesonen


Thanks, that worked!

Br,
Mikael


On 14.4.2016 12:36, Martynas Jusevičius wrote:

My guess would be that because of SPARQL bottom-up semantics,
?prefLabel is undefined at the point where you are applying it. Try
moving it out of OPTIONAL.

On Thu, Apr 14, 2016 at 11:11 AM, Mikael Pesonen
 wrote:

Hi,

im matching strings in different graphs and this should do the trick:

SELECT ?prefLabel ?s2
WHERE {
   GRAPH 
   {
 ?s skos:prefLabel ?prefLabel .
   }
   OPTIONAL {
 GRAPH ?graph
 {
   ?s2 skos:prefLabel ?label2

   FILTER ( lcase(str(?prefLabel)) = lcase(str(?label2)) )
 }
   }
}

but im not getting any results. There are plenty of matches in store and
this returns them (case sensitive match)

SELECT ?prefLabel ?s2
WHERE {
   GRAPH 
   {
 ?s skos:prefLabel ?prefLabel .
   }
   OPTIONAL {
 GRAPH ?graph
 {
   ?s2 skos:prefLabel ?prefLabel
 }
   }
}


Im I using FILTER wrong way or could it be a bug in search engine?

Br,
Mikael

--
www.lingsoft.fi

Speech Applications - Language Management - Translation - Reader's and
Writer's Tools - Text Tools - E-books and M-books

Mikael Pesonen
System Engineer

e-mail: mikael.peso...@lingsoft.fi
Tel. +358 2 279 3300

Time zone: GMT+2

Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND

Turku Office
Linnankatu 10 A
FI-20100 Turku
FINLAND



--
www.lingsoft.fi

Speech Applications - Language Management - Translation - Reader's and Writer's 
Tools - Text Tools - E-books and M-books

Mikael Pesonen
System Engineer

e-mail: mikael.peso...@lingsoft.fi
Tel. +358 2 279 3300

Time zone: GMT+2

Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND

Turku Office
Linnankatu 10 A
FI-20100 Turku
FINLAND



Re: Problem with simple query

2016-04-14 Thread Martynas Jusevičius
My guess would be that because of SPARQL bottom-up semantics,
?prefLabel is undefined at the point where you are applying it. Try
moving it out of OPTIONAL.

On Thu, Apr 14, 2016 at 11:11 AM, Mikael Pesonen
 wrote:
>
> Hi,
>
> im matching strings in different graphs and this should do the trick:
>
> SELECT ?prefLabel ?s2
> WHERE {
>   GRAPH 
>   {
> ?s skos:prefLabel ?prefLabel .
>   }
>   OPTIONAL {
> GRAPH ?graph
> {
>   ?s2 skos:prefLabel ?label2
>
>   FILTER ( lcase(str(?prefLabel)) = lcase(str(?label2)) )
> }
>   }
> }
>
> but im not getting any results. There are plenty of matches in store and
> this returns them (case sensitive match)
>
> SELECT ?prefLabel ?s2
> WHERE {
>   GRAPH 
>   {
> ?s skos:prefLabel ?prefLabel .
>   }
>   OPTIONAL {
> GRAPH ?graph
> {
>   ?s2 skos:prefLabel ?prefLabel
> }
>   }
> }
>
>
> Im I using FILTER wrong way or could it be a bug in search engine?
>
> Br,
> Mikael
>
> --
> www.lingsoft.fi
>
> Speech Applications - Language Management - Translation - Reader's and
> Writer's Tools - Text Tools - E-books and M-books
>
> Mikael Pesonen
> System Engineer
>
> e-mail: mikael.peso...@lingsoft.fi
> Tel. +358 2 279 3300
>
> Time zone: GMT+2
>
> Helsinki Office
> Eteläranta 10
> FI-00130 Helsinki
> FINLAND
>
> Turku Office
> Linnankatu 10 A
> FI-20100 Turku
> FINLAND
>