Hlavní navigace

Akta X 0605

12. 6. 2006
Doba čtení: 3 minuty

Sdílet

XPath 2.0 a XQuery 1.0 budou mít velmi užitečné rozšíření pro fulltextové hledání v XML. Web 2.0 už není jen tak obyčejný buzzword, ale registrovaný buzzword. Zacházejte s ním hodně opatrně, ať nenarušíte něčí práva, jako se to podařilo jednomu sdružení IT profesionálů z irského Corku.

Fulltextové hledání v XML

Začátkem května pracovní skupiny XML Query a XSL uveřejnily novou verzi své společné specifikace XQuery 1.0 and XPath 2.0 Full-Text. Tento pracovní dokument definuje rozšíření jazyků XPath 2.0 a XQuery 1.0, které umožňuje fulltextové prohledávání dokumentů XML. Současně byl také aktulizován doplňkový dokument s příklady využití fulltextového hledání v XML.

XQuery, případně XPath, jsou dostatečně mocné nástroje pro prohledávání pravidelně strukturovaných dokumentů XML, ale to bohužel nestačí. Obrovské množství obsahu v XML tvoří textově orientované dokumenty s méně pravidelnou strukturou. Sem patří například dokumenty XHTML, DocBook nebo OpenDocument, tedy velmi důležité a rozšířené formáty. V textových dokumentech se nejlépe vyhledává pomocí fulltextového hledání, což je poněkud jiná úloha než prosté hledání podřetězce. Fulltext nepracuje s pouhou posloupností znaků, ale předpokládá její členění do slov a vět, poradí si s formátovacími značkami a v ideálním případě i se specifickými vlastnostmi jazyka textu.

Fulltextové rozšíření jazyků XPath 2.0 a XQuery 1.0 zavádí několik nových syntaktických konstruktů. Základním rozšířením je operátor ftcontains, který lze ve výrazech použít podobně jako běžné porovnávací operátory. Ve výrazu XPath 2.0 může být použit takto:

/chapter/section[title ftcontains "XML"]/@ID 

To stejné v XQuery vypadá takto:

for $a in /chapter/section
where $a/title ftcontains "XML"
return $a/@ID 

Operátor ftcontains může být doplněn celou řadou modifikátorů upřesňujících způsob hledání s ohledem na velká a malá písmena, diakritiku, jazyk, shodu slovního základu, použití slovníku synonym či nevýznamová slova.

/chapter/section[title ftcontains "transform" insensitive with stemming ]/@ID 

Pro fulltext je typické, že výsledkem není pouze informace o nalezení či nenalezení shody, ale také ohodnocení přesnosti shody. Za tímto účelem fulltextové rozšíření jazyků XPath/XQuery zavádí další klíčové slovo score deklarující proměnnou, jež bude pro každý nalezený výskyt naplněna hodnotou z intervalu [0,1]. Vyšší hodnota znamená vyšší relevanci. Příklad v XQuery:

for $a score $s in /chapter/section
where $a/title ftcontains "XML"
return <result ID={$a/@ID} score="{$s}"/> 

XPath 2.0 také obsahuje klauzuli for, byť o něco jednodušší, než jsou výrazy FLWOR používané v XQuery. Toto je příklad použití skóre v XPath 2.0:

for $a score $s in /chapter/section[$a/title ftcontains "XML"] return $s 

Poslední možnost rozšíření se už týká pouze XQuery. Výše zmíněné modifikátory způsobu hledání mohou být uvedeny také v prologu dotazu jako statický kontext. Modifikátory uvedené přímo u operátoru ftcontains pak mají vyšší prioritu.

Implementace fulltextového rozšíření pro XPath 2.0 a XQuery 1.0 nevystačí s datovým modelem pro XPath/XQuery. Všechny textové řetězce bude navíc nutné „tokenizovat“, tj. rozdělit na slova a věty. Tokenizace, podpora modifikátorů, výpočet skóre – to vše bude silně závislé na implementaci. Proto se musíme smířit s tím, že od různých implementací fulltextu pro XPath/Xquery pro stejný dotaz ve stejném kontextu budeme dostávat různé výsledky.

cyber23

Web 2.0 ochrannou známkou?

it@cork, sdružení IT profesionálů z irského Corku se rozhodlo uspořádat maloukonferenci o Webu 2.0. Jaké muselo být jejich překvapení, když jim dva týdny před konferencí přišel dopis od právníků zastupujících firmu CMP, která společně s nakladatelstvím O'Reilly pořádá velkou konferenci o Webu 2.0. Právníci oznámili, že pojem Web 2.0 je chráněnou servisní známkou (service mark) společnosti CMP, a požádali o jejího odstranění z názvu konference.

Skutečnost, že se O'Reilly, přední propagátor open source, otevřených standardů a odpůrce softwarových patentů, podílí na registraci pojmu, který se jeho přičiněním stal běžnou součástí IT slovníku, je přinejmenším zajímavá. O'Reillyho lidé se sice snažili vysvětlovat, že ochrana platí pouze pro názvy akcí, a nakonec se s organizátory z Corku domluvili na kompromisu („Web 2.0 Conference“ vadí, „Web 2.0 Half Day Conference“ nikoli), ale stejně se nemůžu zbavit divného pocitu. Pochopím, když si někdo chrání přesný název akce, kterou pořádá, přestože u obecných názvů typu „Web 2.0 Conference“ nebo „Perl Conference“ to může být problematické. Ale registrovat si užití obecného pojmu v názvu akce je něco jiného. Co až si někdo zaregistruje termín „Conference“? CMP a O'Reilly tentokrát šlápli hodně vedle.

Byl pro vás článek přínosný?