Hi Christian,
NOT EXISTS is supported already.
E.g., right now at lod.openlinksw.com/sparql
both
SELECT count(*) WHERE {?s ?p "Novosibirsk" filter not exists { ?s ?p
"Новосибирск" } }
and
SELECT count(*) WHERE { { ?s ?p "Novosibirsk" } minus { ?s ?p
"Новосибирск" } }
return 313,
both
SELECT count(*) WHERE {?s ?p1 "Novosibirsk" filter not exists { ?s ?p2
"Новосибирск" } }
and
SELECT count(*) WHERE { { ?s ?p1 "Novosibirsk" } minus { ?s ?p2
"Новосибирск" } }
return 309,
plain
SELECT count(*) WHERE { ?s ?p "Novosibirsk" }
returns 314.
Keeping in mind that "Новосибирск" is Russian and "Novosibirsk" is
English transcription for same city, these numbers differ for a good
reason :)
Best Regards,
Ivan Mikhailov
OpenLink Software
http://virtuoso.openlinksw.com
On Sat, 2011-11-12 at 14:02 +0000, Hugh Williams wrote:
> Hi Christian
>
> Virtuoso does not support “NOT EXIST” but does have its own built in function:
>
> FILTER (!bif:exists ((select (1) ...)))
>
> See the following example on usage:
>
>
> http://docs.openlinksw.com/virtuoso/rdfsparqlrule.html#rdfsparqlruleexamples6
>
> LET is a Jena specific keyword not support in Virtuoso. The SPARQL 1.1
> standard provides an equivalent called “BIND” it appears which is not
> currently supported in Virtuoso but is scheduled for the next release.
>
> Best Regards
> Hugh Williams
> Professional Services
> OpenLink Software
> Web: http://www.openlinksw.com
> Support: http://support.openlinksw.com
> Forums: http://boards.openlinksw.com/support
> Twitter: http://twitter.com/OpenLink
>
> On 12 Nov 2011, at 09:42, Christian Fuerber wrote:
>
> > Dear all,
> >
> > I am having trouble using certain keywords of Jena ARQ to query virtuoso
> > over the Virtuoso Jena Provider.
> >
> > In particular, my queries require the use of the keywords LET, NOT EXISTS,
> > and IRI.
> > For example I tried to execute the following Code:
> >
> > VirtGraph set = new VirtGraph
> > ("jdbc:virtuoso://localhost:1111/charset=UTF-8/log_enable=2", "dba", "dba");
> > Model model = new VirtModel(set);
> >
> > String queryString =
> > "SELECT ?s ?o ?now " +
> > " FROM <http://localhost/mediawiki> " +
> > " WHERE{" +
> > " ?s ?p ?o . " +
> > "LET(?now := true)" +
> > "}";
> > Query query =
> > QueryFactory.create(queryString,Syntax.syntaxARQ);
> > QueryExecution vqe =
> > VirtuosoQueryExecutionFactory.create(query, model);
> > ResultSet results = vqe.execSelect();
> > System.out.print(ResultSetFormatter.asText(results));
> >
> > Which returns the following error message:
> >
> > Exception in thread "main" com.hp.hpl.jena.shared.JenaException: Can not
> > create ResultSet.:virtuoso.jdbc3.VirtuosoException: SQ074: Line 12: SP030:
> > SPARQL compiler, line 10: syntax error at 'LET' before '('
> > at virtuoso.jena.driver.VirtuosoQueryExecution.execSelect(Unknown
> > Source)
> > at VirtuosoSPARQLExample1.main(VirtuosoSPARQLExample1.java:73)
> >
> > When I use QueryExecutionFactory instead of VirtuosoQueryExecutionFactory I
> > get the following error message:
> >
> > Exception in thread "main" com.hp.hpl.jena.shared.JenaException: Can not
> > create QueryIterator.:virtuoso.jdbc3.VirtuosoException: SQ074: Line 12:
> > SP030: SPARQL compiler, line 10: syntax error at 'LET' before '('
> > at virtuoso.jena.driver.VirtuosoQueryEngine.eval(Unknown Source)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryEngineBase.evaluate(QueryEngineBase.java:
> > 124)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryEngineBase.createPlan(QueryEngineBase.jav
> > a:98)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryEngineBase.getPlan(QueryEngineBase.java:8
> > 6)
> > at
> > virtuoso.jena.driver.VirtuosoQueryEngine$VirtQueryEngineFactory.create(Unkno
> > wn Source)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryExecutionBase.getPlan(QueryExecutionBase.
> > java:266)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryExecutionBase.startQueryIterator(QueryExe
> > cutionBase.java:243)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryExecutionBase.execResultSet(QueryExecutio
> > nBase.java:248)
> > at
> > com.hp.hpl.jena.sparql.engine.QueryExecutionBase.execSelect(QueryExecutionBa
> > se.java:94)
> > at VirtuosoSPARQLExample1.main(VirtuosoSPARQLExample1.java:73)
> >
> > Simple queries without the use of Jena ARQ specific keywords work fine!
> >
> > I am using Virtuoso Open Source 6.1.4 and Jena 2.6.2 with ARQ 2.8.3. The
> > virt_jena.jar is for Jena 2.6.2 [Build 1.5].
> >
> > Thank you for any help!
> >
> > Christian
> >
> > ------------------------------------------
> > Dipl.-Kfm. Christian Fürber
> > Professur für Allgemeine BWL, insbesondere E-Business
> > e-business & web science research group
> > Universität der Bundeswehr München
> >
> > e-mail: c.fuer...@unibw.de
> > www: http://www.unibw.de/ebusiness/
> > skype: c.fuerber
> > twitter: cfuerber
> >
> >
> >
> > ------------------------------------------------------------------------------
> > RSA(R) Conference 2012
> > Save $700 by Nov 18
> > Register now
> > http://p.sf.net/sfu/rsa-sfdev2dev1
> > _______________________________________________
> > Virtuoso-users mailing list
> > Virtuoso-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/virtuoso-users
>
> ------------------------------------------------------------------------------
> RSA(R) Conference 2012
> Save $700 by Nov 18
> Register now
> http://p.sf.net/sfu/rsa-sfdev2dev1
> _______________________________________________ Virtuoso-users mailing list
> Virtuoso-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/virtuoso-users