Re: construct test case, revised

On Fri, 2005-08-05 at 19:42 -0400, Kendall Clark wrote:
> On Fri, Aug 05, 2005 at 05:49:11PM -0400, Kendall Clark wrote:
> 
> Argh... I should have said...
> 
> > --Query--
> > PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> > PREFIX foaf: <http://xmlns.com/foaf/0.1/>
> > PREFIX myfoaf: <http://clark.dallas.tx.us/kendall/foaf.rdf#>
> > 
> > CONSTRUCT { myfoaf:kendall foaf:depiction <http://clark.dallas.tx.us/kendall/kendall.jpg>.
> >             myfoaf:kendall foaf:schoolHomepage <http://www.smu.edu/>.
> >             ?s ?p ?o.}
> > WHERE { ?s ?p ?o.
> >       	FILTER( ?s != myfoaf:kendall &&
> > 	        ?p != foaf:knows &&
> > 		?o != myfoaf:edd )}
> 
> WHERE { ?s ?p ?o.
>         FILTER( ?s != myfoaf:kendall &&
> 		?p != foaf:knows &&
> 		?o != myfoaf:edd)
> 	FILTER( ?s != myfoaf:edd ) }
> 
> But it seems, from a quick look at the grammar, that there can only be one
> FILTER in a WHERE? Is that correct? What's the reason for that restriction,
> if so?

I'm not sure what the syntax rules are, but multiple FILTERs,
i.e. FILTER e1 FILTER 2 would surely mean the same thing as
FILTER e1 && e2, right?

I think what you want is

  FILTER ( ! (
     ?s == myfoaf:kendall && ?p == foaf:knows && ?o == myfoaf:edd ) )

or if there's another triple you want to filter out:

  FILTER ( ! (
     ?s == myfoaf:kendall && ?p == foaf:knows && ?o == myfoaf:edd )
     && ! ( ?s = subj && ?p = pred && ?o = obj ) )

and so on.


> And is this legal instead?
> 
> WHERE { ?s ?p ?o.
>         FILTER( (?s != myfoaf:kendall || ?s != myfoaf:edd) &&
> 		 ?p != foaf:knows &&
> 		 ?o != myfoaf:edd) }
> 
> Cheers,
> Kendall
-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
D3C2 887B 0F92 6005 C541  0875 0F91 96DE 6E52 C29E

Received on Monday, 8 August 2005 18:29:02 UTC