mff-uk / odcs

ODCleanStore
1 stars 11 forks source link

Add two versions of HTTP POST request for SPARQL LOader and Extractor. #1069

Closed tomas-knap closed 10 years ago

tomas-knap commented 10 years ago

SPARQL Loader/Extractor currently support one way of HTTP POSTing data to SPARQL endpoint, which is still Virtuoso specific, because default-graph-uri is not in the specification. I would suggest to keep this option, but add also two more options, which support the two types of sending queries as specified in the specification (http://www.w3.org/TR/sparql11-protocol):

screen shot 2014-01-14 at 11 29 31 am

So in gui, when configuring SPARQL Extractor/LOADER, on the details tab, there should be two choices:

Related to #1061

Pozor: pokud je query posilane pres HTTP standardni SPARQL query, potom by tam mel byt v HTTP POST param queyr. Pokud je to SPARQL update query, tak by tam mel byt update. Tohle uz jsem ti tam opravil (Virtuoso bere jak query, tak update, viz commit 775441b44f7415b5db49cba0ebfc7c2e5c5ccd77

tomas-knap commented 10 years ago

Kdyztak se ptej, co neni jasne

skodapetr commented 10 years ago

Když vidím ten počet options .. nechtěli bychom další DPU?

Nevím zda-li je to tak velký rozdíl, ale místo SPAQRL Extractoru\Loaderu bychom pak mohli mít více specifické loadery. Výhodu bych viděl v tom, že by uživatel rovnou viděl jaký extractor\loader používá s tím, že by věděl proti jakému endpointu (co ten požaduje). Na druhou stranu jedno DPU to může řešit elegantně vše v jednom.

Tedy jen jako možnost na zvážení.

tomas-knap commented 10 years ago

Tam jde o to, ze v tomhle konkretnim pripade je to zmena v jedne metode, mozna dokonce v jednom if. A shodou okolnosti v metode, ktera se reusuje z BaseRDFRepo, coz neni stastne, ale ted uz s tim nic neudelame.

Navic myslenka toho loaderu je porad stejna - je to univerzalni SPARQL loader, ktery posila dotazy pres HTTP POST. Tedy asi bych tohle nechal u jedhoho DPU

skodapetr commented 10 years ago

Aha, ono to znělo více složitě, než jeden If.. tedy beru návrh zpět.

tomesj commented 10 years ago

Jedna zásadní otázka Má se tedy výběr query, co je na místě #1069 nabízet jen 2 možnosti (Query,Update). Nebo tam může toho být více (obecně cokoliv, co se zadá do textového pole). Pak by totiž ten enum byl vlastně k ničemu a rovnou by se dosadili zadané parametry :-)

Co z toho teda platí, abych měl jasno ?

tomas-knap commented 10 years ago

Delam mockup

tomas-knap commented 10 years ago

Mockup pro SPARQL LOADER:

https://grips.semantic-web.at/display/LOD2/DPU+-+Loader+to+RDF+database

Tedy pribyla zalozka SPARQL Protokol, ktera bude mit dve varianty. Tu prvni mas ted implementovanou. Tu druhou je treba dodelat. Pro kazdou variantu je tam moznost jeste customizovat params. S tim, ze defaultne tam budou predvyplnene params dle SPARQL 1.1 specifikace (mas to v mockupu).

Tedy je treba pridat tu druhou moznost a nedavat tam params do HTTP post natvrdo, ale dle nastaveni.

tomas-knap commented 10 years ago

Jirko, jeste jsem updatoval ten SPARQL LOader mockup, virtuoso to ma jinak, takze jsou tam tri moznosti: prvni dva dle spec SPARQL 1.1 a treti Virtuoso specific (ten je taky default)

tomas-knap commented 10 years ago

Mockup pro SPARQL Extractor:

https://grips.semantic-web.at/display/LOD2/DPU+-+Loader+to+RDF+database

Tam je to podobne. Akorat krome tech dvou POST variant je tam i varianta GET. Neni potreba Virtuoso specific branch nebot tady Virtuoso pouziva params ze specifikace. Nicmene opet plati ze po volbe varianty muze user predefinovat params

tomas-knap commented 10 years ago

Jeste jedna vec, udelej dve metody getEndpointStreamReader (BaseRDFRepo), at tam neni moc switchu a ifu. A pokud to jde, tak kazdou tu getEndpointStream soupni rovnou pod SPARQL Extractor resp. SPARQL Loader DPU a vyhod ji z RDFDataUnit rozhrani. Tam nema co delat, jinde se nepouziva

tomesj commented 10 years ago

OK...Je toho, celkem dost :-) Ale je to jasné :-) Tak jdu na to :-)

tomas-knap commented 10 years ago

Koukni na to prosim a pis co neni jasne :-)

tomas-knap commented 10 years ago

Jinak vse vychazi ze specifikace: http://www.w3.org/TR/sparql11-protocol/#update-operation

Sekce 2.1 pro SPARQL query Sekce 2.2 pro SPARQL Update

tomesj commented 10 years ago

Dobrá - jinak jasné je vše :-)

tomas-knap commented 10 years ago

Jeste jsem do SPARQL extractoru pridal ty named-graph-uri -> mrkni na mockup a spec. Ve SPARQL Loaderu to neni podstatne.

tomas-knap commented 10 years ago

@tomas-knap Test on BigData, where using-graph-uri must be used

tomesj commented 10 years ago

[1] update via URL-encoded POST [2] update via POST directly

Chápu správně, že [2] se od [1] liší jen tím, že se změní Request Content Type a parametry se nekódují ?

tomas-knap commented 10 years ago

V podstate ano. Jeste u te [2] se pripadne parametry typy default-graph a named-graph davaji primo do adresy, viz 3.2.3:

POST /test?using-graph-uri=http%3A%2F%2Flocalhost%3A8888%2Fpeople HTTP/1.1
Host: localhost:8888
Accept: */*
Content-Type: application/sparql-update
Content-Length: 136
PREFIX foaf: 
DELETE { ?person ?property ?value }
WHERE { ?person ?property ?value ; foaf:givenName 'Fred' }
tomas-knap commented 10 years ago

Jirko, jeste te poprosim, uprav to tak, aby se defaultni hondoty (tj. HTTP POST URL encoded s defaultnimi parametry) doplnili automaticky, pokud chybi. Tedy deserializuje se konfigurace z DB, zjisti se, ze nektere hodnoty jsou null -> automaticky se doplni defaultni hodnoty. Tedy abych nemusel rucne upravovat cca 30-40 loaderu, ktere mam. Zeptej se kdyztak Petra, on to takto upravoval kdyz jsi pridaval reconnect time/pocet pokus pro SPARQL loader. Ale strucne, je tam nejaka metoda onDeserialize(), kterou muzes implementovat na DPUConfig a v ni donastavit parametry.

Tohle udelej prosim pro Loader i extraktor a co nejdrive. Uprav i data.sql

tomesj commented 10 years ago

Soubor data.sql už jsem upravil, na to nastavení/doplnění defaultních hodnot se podívám za chvíli :-)

tomesj commented 10 years ago

Tak jsem to tam přidal - jen u SPARQL extractoru je 1 problém, protože seznam default grafů, který byl ve staré konfiguraci se v nové nevyskytuje - respektve je rovnou součástí instance ExtractorEndpointParams.

Jde o to, že když je tato instance nastavena na null (v původní konfiguraci nebyla), tak vytvořím novou instanci ExtractorEndpointParams s defaultním nastavením parametrů (ta nemá nastavené, ale žádné grafy). Já ty grafy ale nemohu nastavit, protože k nim už nemám přístup.

Pokud se nenastaví ale grafy, bude se vlastně zkoušet extrakce jen na základě enpointu a dotazu.

Tedy v tomto případě bude potřeba pro každý SPARQL extractor formulář otevřít a uložit. Tím se stará konfigurace přepíše - jinak nevím, jak bych mohl dostat ty grafy, které jsou pro extrakci potřeba

tomas-knap commented 10 years ago

viz ten mail co jsem psal Mel by resit i ten problem s Extractorem

tomesj commented 10 years ago

Je to hotové :-)

tomas-knap commented 10 years ago

Diky!

tomas-knap commented 10 years ago

Ulozim si named graph v nastaveni SPARQL extraktoru. Otevru znovu conf a neni nastaven.

tomas-knap commented 10 years ago

Podobne kdyz si nastavim default graph, ulozim, otevru, tak tam mam furt ten puvodni

tomas-knap commented 10 years ago

3) Oteveru si SPARQL loader a mam tam na SPARQL params zalozce:

screen shot 2014-01-22 at 3 53 30 pm

Jirko, testoval sis ty tvoje nove konfigurace pouzit?

tomas-knap commented 10 years ago

Tedy myslim pouzit tak jako kazdy jiny uzivatel, tj. pres gui?

tomas-knap commented 10 years ago

Tedy proklikej to. Tos mel udelat jeste predtim nez pises "hotovo :-)"

tomas-knap commented 10 years ago

4) Koukam, ze nastaveni default graph param se taky spravne neulozi

tomas-knap commented 10 years ago

To posledni pak vede k : URL endpoint: http://odcs.xrg.cz:8900/sparql-auth POST content: update=INSERT+%7B%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FPrague%3E+%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23sameAs%3E+%3Chttp%3A%2F%2Fan.dbpedia.org%2Fresource%2FPraga%3E+.%7D+&update=http%3A%2F%2Ftest%2F2014-01-22%2F1%2Ftemp&format=application%2Frdf%2Bxml

Tedy ze se v tom URI dvakrat objevi update param.

tomesj commented 10 years ago

Aha, to je divné, protože jsem to zkoušel u sebe otevřít a bylo to vše OK. Podívám se na to tedy speciálně ještě jednou :-)

tomesj commented 10 years ago

Tak měl jsi pravdu, tak se tímto moc omlouvám, pokud jsem způsobil zbytečné komplikace. Příště si budu dávat větší pozor :-)

Zkoušel jsem to ještě teď proklikat a mělo by to být OK (včetně ukládání grafů) :-)

tomas-knap commented 10 years ago

Jeste Jirko toto:

Natahni si novy SPARQL loader, detail, SPARQL protocol. Zmen nastaveni default graph param. Pak, kdyz se prekliknes na Use POST with unencode, you have to see the default settings. So the text boxes query param a default graph param must be different from every choice on SPARQL protocol

Correct also for the extractor.

tomesj commented 10 years ago

Jo, jestli to právně chápu, tak chceš to, že když si překlikneš na jiný typ postu, tak se ti automaticky změní případně parametry pro default graph a query param. Je to tak ?

tomas-knap commented 10 years ago

jj

tomesj commented 10 years ago

Ještě dotaz - ono jsou 2 pohledy, jak se na to koukat

1) změní se konfigurace - součástí budou všechny možné varianty, tedy mapování: varianta- parametry (pro query, graph)....

2) Jde jen o lokální použití v rámci dialogu - tedy když mám otevřeno, můžu přepínat a pamatuje si to parametry, to co jsem si u zvolené možnosti už vyplnil (změnil), ale jen dokud nezavřu ten dialog (ať už úspěšně či neúspěšně) s tím, že mi uloží jen zvolená konfigurace a zbytek se zahodí...)

Myslel jsi to jako 1) jako 2) nebo něco dalšího ?

tomas-knap commented 10 years ago

Asi staci 2) Tedy ze se ulozi vzdy parametry pro aktualne nastavenou variantu a kdyz prekliknu v budoucnu (pri dalsim otevreni), tak dostanu defaultni hodnoty pro prislusnou jine moznosti.

tomesj commented 10 years ago

OK, tedy udělám variantu 2)

tomesj commented 10 years ago

Varianta 2) implementována :-)