A question about Filter Function Expression

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

A question about Filter Function Expression

韩兴旺
Hi:
    I want to be sure that , according to SPARQL 1.1 specificition, (do not consider the implementations ), this query SELECT * WHERE {?s ?p ?o  filter(isBlank(?s)) filter(str(?s) = 'nodeID://b10001') } limit 10  must return empty solution(Because the domain of function STR do not contain BlankNode)? And for more examples if filter condition is  Regex(?x, '^a'); and if the mapping solution of ?x must be a Literal or it can be a BlankNode or URI?
    Wish your reply!
    Your Sincerely
    Xingwang Han


Hi there,

If you ask for JSON or XML results, you'll see that ?s is returned as a bnode so some of this is the presentation of bNodes in the HTML.
(The TSV format is broken.)

Implementations may add something in any place where the signature does not cover the case, here, STR on a blank node.  It means that a filter may pass more solutions than the basic standard, but not less (well, that was the design in SPARQL 1.0 - it's not so simple in SPARQL 1.1).

Your question is specific to the engine implementation at http://lod.openlinksw.com/sparql
so you might get a more detailed answer there or in its documentation.

    Andy

On 19/12/15 16:49,  wrote:
Hi, All :
    Now, I have a question. Can you help me?

    In sparql 1.1 I find the definition of function str() is that:
       17.4.2.5 str
     simple literal  STR (literal ltrl)
     simple literal  STR (IRI rsrc)
  
    But when I search the query  SELECT * WHERE {?s ?p ?o  filter(isBlank(?s)) filter(str(?s) = 'nodeID://b10001') } limit 10 ,
    I think if
isBlank(?s) is true, then function str(?s) will not be executed. Because the domin of str do not contain Blank node.
    I think I will got the empty solution. But when I search this query on the endpoint of
LOD Cloud Cache  on the web site http://lod.openlinksw.com/sparql/,
    I got the result like the following:
   
  s p o
nodeID://b10001 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Class
nodeID://b10001 http://www.w3.org/2002/07/owl#complementOf http://www.w3.org/2002/07/owl#Nothing


    I fell it is odd, and I want to know why it is so!
    Thank you very much.
    Your Best Xingwang
    Wish your reply.

Reply | Threaded
Open this post in threaded view
|

Re: A question about Filter Function Expression

Andy Seaborne-4
As it's a legal extension point, you can't completely ignore implementations.

You can talk about "an implementation with no extensions", in which case there will be zero results.

    Andy

On 20/12/15 14:11, 韩兴旺 wrote:
Hi:
    I want to be sure that , according to SPARQL 1.1 specificition, (do not consider the implementations ), this query SELECT * WHERE {?s ?p ?o  filter(isBlank(?s)) filter(str(?s) = 'nodeID://b10001') } limit 10  must return empty solution(Because the domain of function STR do not contain BlankNode)? And for more examples if filter condition is  Regex(?x, '^a'); and if the mapping solution of ?x must be a Literal or it can be a BlankNode or URI?
    Wish your reply!
    Your Sincerely
    Xingwang Han


Hi there,

If you ask for JSON or XML results, you'll see that ?s is returned as a bnode so some of this is the presentation of bNodes in the HTML.
(The TSV format is broken.)

Implementations may add something in any place where the signature does not cover the case, here, STR on a blank node.  It means that a filter may pass more solutions than the basic standard, but not less (well, that was the design in SPARQL 1.0 - it's not so simple in SPARQL 1.1).

Your question is specific to the engine implementation at http://lod.openlinksw.com/sparql
so you might get a more detailed answer there or in its documentation.

    Andy

On 19/12/15 16:49,  wrote:
Hi, All :
    Now, I have a question. Can you help me?

    In sparql 1.1 I find the definition of function str() is that:
       17.4.2.5 str
     simple literal  STR (literal ltrl)
     simple literal  STR (IRI rsrc)
  
    But when I search the query  SELECT * WHERE {?s ?p ?o  filter(isBlank(?s)) filter(str(?s) = 'nodeID://b10001') } limit 10 ,
    I think if
isBlank(?s) is true, then function str(?s) will not be executed. Because the domin of str do not contain Blank node.
    I think I will got the empty solution. But when I search this query on the endpoint of
LOD Cloud Cache  on the web site http://lod.openlinksw.com/sparql/,
    I got the result like the following:
   
  s p o
nodeID://b10001 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Class
nodeID://b10001 http://www.w3.org/2002/07/owl#complementOf http://www.w3.org/2002/07/owl#Nothing


    I fell it is odd, and I want to know why it is so!
    Thank you very much.
    Your Best Xingwang
    Wish your reply.