[Virtuoso-users] SPARQL query size limits (GET, POST, POST DIRECT)
Hi, for my PhD (learning graph patterns for human associations) i'm currently experimenting with some sub-graphs that i need to match via SPARQL against a Virtuoso endpoint. The sub-graph sizes range from 30 to 400K triples and are automatically transformed into SPARQL queries (basically via N3). I'm interested in the practical limits for queries via: - GET - POST - POST DIRECT in terms of bytes, chars and triples. I noticed that there seems to be a 1 line limit for the SQL query that is the outcome of the SPARQL query. I'm not sure how SPARQL queries are translated into SQL lines though... is this triple wise (so max 1 triples) or term wise (so max 1/3 triples) or something else? Experiments tell me that the GET method seems to have a ~1 byte limit (after urlencoding). Sadly, I couldn't really test POST DIRECT, as on our local 7.1.0 endpoint even queries with ~150 triples (~18000 chars) seem to crash the endpoint :( If i remove long literals (which also happen to contain a lot of unicode chars), the query doesn't return within 2 hours. If i switch to POST query, i only get a Virtuoso 42000 Error SR483: Stack Overflow error, but the server keeps running at least... If for POST queries i keep the urlencoded query size 1 bytes, it seems to work. Running the POST DIRECT query against http://dbpedia.org/sparql results in an HTTP Error 409: Invalid path. POST gives me Virtuoso 37000 Error SP031: SPARQL: Internal error: The length of generated SQL text has exceeded 1 lines of code If I run the 1 byte POST it seems to work again... Can anyone confirm my findings / give me a recommendation for how big a sane query can get? Cheers, Jörn -- Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users
[Virtuoso-users] Incorrect results with property paths using plus sign
Hi all, I think that SPARQL queries using property paths which include the plus sign yield incorrect results. This is what I get with the following queries (number of results between brackets): SELECT DISTINCT ?scl WHERE {wd:Q3336843 rdfs:subClassOf* ?scl} (25 rows) SELECT DISTINCT ?scl WHERE {wd:Q3336843 rdfs:subClassOf+ ?scl} (4 rows) SELECT DISTINCT ?scl WHERE {wd:Q3336843 rdfs:subClassOf{1,} ?scl} (24 rows) SELECT DISTINCT ?scl WHERE {wd:Q3336843 rdfs:subClassOf{2,} ?scl} (20 rows) SELECT DISTINCT ?scl WHERE {wd:Q3336843 rdfs:subClassOf{3,} ?scl} (17 rows) ... This is the output of EXPLAIN on the first and second queries (the latter 3 have apparently the same plan as the first one): { Precode: 0: __all_eq := Call __all_eq ( #/Q3336843 ) 5: BReturn 0 Transitive dt dir 1, input: (__all_eq) input shadow: (ZÁ^D) output: (_::trans_obj_1_1) { RDF_QUAD 1.8 rows(s_1_4_t0.S, s_1_4_t0.O) inlined P = ##subClassOf , S = k_ZÁ^D After code: 0: _::trans_subj_1_0 := := artm s_1_4_t0.S 4: _::trans_obj_1_1 := := artm s_1_4_t0.O 8: BReturn 0 Subquery Select(_::trans_subj_1_0, _::trans_obj_1_1) } Distinct (_::trans_obj_1_1) After code: 0: scl := := artm _::trans_obj_1_1 4: BReturn 0 Subquery Select(scl) After code: 0: scl := Call __ro2sq (scl) 5: BReturn 0 Select (scl) } { RDF_QUAD 8 rows(s_1_2_t0.O) inlined P = ##subClassOf , S = #/Q3336843 Distinct (s_1_2_t0.O) After code: 0: scl := := artm s_1_2_t0.O 4: BReturn 0 Subquery Select(scl) After code: 0: scl := Call __ro2sq (scl) 5: BReturn 0 Select (scl) } Have you already encountered this issue? I'm using build f609f14aa6bdb8ef29d4da038fdb7934c6ca65d7. Thanks, Nicola -- Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users
[Virtuoso-users] virtuoso isql batch mode?
Is there some way to put virtuoso isql into a true batch mode? Some other database system command-line interfaces provide a batch mode option that just displays results, not version banners, table headers, or time information. This is very handy for building scripts around. I can sort-of emulate this in isql by setting: set VERBOSE OFF; set BANNER OFF; set MESSAGE OFF; But I still get the Connected to and Driver lines. And I'm also concerned that later versions could add new sources of information. So it would be nice to have a command-line option that will set the options necessary to script cleanly, both now and in the future. Hopefully such a thing already exists, and I just didn't find it. If not, feature request: please implement such a mechanism. Note: this is currently under virtuoso open source version 7.2.0, under Linux. The commercial version is not an option at this time. - Morty -- Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ ___ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users