mff-uk / odcs

ODCleanStore
1 stars 11 forks source link

When SPARQL extracting data, optionally, LIMIT/OFFSET pattern should be used #1220

Open tomas-knap opened 10 years ago

tomas-knap commented 10 years ago

When SPARQL extracting data, it should be possible to define (optionally) possibility to get data not in one query, but via more queries using LIMIT/OFFSET pattern.

Motivation: Problem with bigger data if there is not a proper settings in virtuoso.ini of remote servers.

tomas-knap commented 10 years ago

Myslenka je takova, ze v dialogu se objevi na zalozce details novy checkbox + textbox, viz mockup:

https://grips.semantic-web.at/display/UNVI/DPU+-+SPARQL+Extractor

Tuhle zmenu v GUI prosim udelej sam at necekas na Marii, mela by to byt drobnost na 20min. Co je treba upravit na strane funckionality? Pokud bude vyse uvedeny checkbox odskrtnuty (defaultni moznost), tak se to chova jak ted. Pokud bude zasrktnuty, tak:

1) Pokud uzivatel nedefinoval SPARQL construct query, tak se misto defaultniho query CONSTRUCT {?s ?p ?o } WHERE {?s ?p ?o } pouzije serie dotazu: CONSTRUCT {?s ?p ?o } WHERE {?s ?p ?o } ORDER BY ?s ?p ?o LIMIT 50000 OFFSET 0, CONSTRUCT {?s ?p ?o } WHERE {?s ?p ?o } ORDER BY ?s ?p ?o LIMIT 50000 OFFSET 1, CONSTRUCT {?s ?p ?o } WHERE {?s ?p ?o } ORDER BY ?s ?p ?o LIMIT 50000 OFFSET 2, ..., az kolik je potreba offsetu. To cislo 50000 se bere z text boxu z konfigurace (viz https://grips.semantic-web.at/display/UNVI/DPU+-+SPARQL+Extractor)

2) Pokud uzivatel definoval SPARQL construct query, tak je potreba z toho user dotazu udelat serii dotazu podobnym zpusobem. Akorat je treba zkontrolovat, ze uzivatel nepouzil ve svem construct query ORDER BY, LIMIT nebo OFFSET na te urovni celeho dotazu (tedy nekde uvnitr v subdotazu mohl). Pokud ano, tak proste pri execution vypis chybu - cannot convert one query to set of queries because ORDER BY, .. is already used.

Otestuj na konci, ze se to chova jak se ocekavam - udelej unit test, otestuj gui. Otestuj i to, ze odskrtnuta tato option zpusobi, ze se to chova jako predtim

tomesj commented 10 years ago

A jak řešit případy, když budu mít už limit jako součást dotazu - viz naše DBPEDIA, kde to máme omezené na 100 triplů. Jak to potom řešit. To přeci nebude fungovat - 2x LIMIT být nesmí.

tomas-knap commented 10 years ago

Vzdyt rikam, ze kdyz uz tam limit je, tak zahlasis, ze to nejde rozdelit, protze uz tam jeden limit je

tomesj commented 10 years ago

Jo, už to vidím :-) V tom případě v pohodě :-)

tomas-knap commented 10 years ago

Jirko, jeste mi tam chybi hlaska v logu, ktera rika neco jako "extrahuju triples po xx triples". A davej tam v debug rezimu i to query (to plati i pro ten single query mode)

tomas-knap commented 10 years ago

Pak muzes zavrit

tomas-knap commented 10 years ago

Jirko, je tam problem, koukni na odcs-test, exec 12

http://odcs.xrg.cz:8080/odcleanstore-test/#!ExecutionList/page=1&owner.username=admin

Nastavim si, ze chci extrahovat 200 000 triples z dbpedie, zalozka details: screen shot 2014-02-21 at 12 35 29 pm

Nicmene v logu pak je: screen shot 2014-02-21 at 12 35 01 pm

Tedy vypada to, ze se extrahuje vzdy jen 50000. Nemas tam nekde napevno tech 50000 kdyz nenajdes v konfiguraku informace o nastaveni extrakce po castech?

tomas-knap commented 10 years ago

Co je tohle ve SPARQL ExtractorConfig?!!

if (splitConstructSize == null) { splitConstructSize = 50000; }

To v praxi znamena zrejme, ze pro vsechny stare konfigurace ktere v db nemaji splitConstructSize, tak extraktor extrahuje jen 50000 triples!

tomas-knap commented 10 years ago

Tak je mozne, ze za to muze omezeni dbpedie, zkus prosim

tomesj commented 10 years ago

Jo, tohle je u té metody onDeserialize, kde se to nastaví na hodnotu 50 000 v případě, že to není součástí konfigurace. Jinak dbpedia má myslím svá jistá omezení - zkontroluju to a dám vědět

tomesj commented 10 years ago

Tak problém bude v dbpedii, protože když jsem to pustil na velký graf u sebe s hodnotou 200 000, tak vše OK, když na dbpedii, tak jsem dostal, že

cz.cuni.mff.xrg.odcs.rdf.exceptions.InsertPartException: HTTP/1.1 500 SPARQL Request Failed. Caused by Virtuoso 22023 Error SR353: Sorted TOP clause specifies more then 100000 rows to sort. Only 40000 are allowed. Either decrease the offset and/or row count or use a scrollable cursor

tomas-knap commented 10 years ago

Dobra, ale kdyz se to nastavi na tech 50 000, tak to stale jeste neni aktivni, ne? Tedy aby to rozdelovani bylo aktivni pro puvodni konfigurace, tak to musi uzivatel explicitne zaskrtnout, je to tak?

2014-02-21 14:19 GMT+01:00 Jiří Tomeš notifications@github.com:

Jo, tohle je u té metody onDeserialize, kde se to nastaví na hodnotu 50 000 v případě, že to není součástí konfigurace. Jinak dbpedia má myslím svá jistá omezení - zkontroluju to a dám vědět

Reply to this email directly or view it on GitHubhttps://github.com/mff-uk/ODCS/issues/1220#issuecomment-35729455 .

tomesj commented 10 years ago

Je to přesně tak - aktivní to je až v okamžiku zaškrnutí - do té doby do nemá žádnou váhu

tomas-knap commented 10 years ago

Needs to be adjusted a bit (discussion in Mannheim), inner subgraph which operates only on subjects..when subject is selected, all triples for this subject are fetched.