DASL aneb hledání pomocí WebDAV

15. července 2003

Jak co nejefektivněji najít potřebné informace? To je otázka, kterou prakticky neustále řeší každý, kdo se dostane do styku s Internetem nebo podobnou sítí. Práce s informacemi je přitom základem technologie WebDAV, takže je jasné, že i v tomto směru bude nabízet nějaké řešení.

V seriálu článků věnovaných WebDAVu už bylo řečeno, že k jednotlivým souborům můžeme připojovat i různé informace, nazývané „vlastnosti“. Od velikosti souboru a data vytvoření, které jsou přiřazovány automaticky, přes jména autorů, až po náladu, kterou jsme měli při jejich vytváření. Pokud však budeme chtít soubory podle připojených vlastností setřídit, narazíme na problém. Už jen prosté seřazení souborů podle velikosti je problematické, natož ještě vyhledat soubory, které vytvářeli jen určití uživatelé. Můžeme totiž pouze načíst požadované vlastnosti jednotlivých souborů a pak je prostřednictvím klientské aplikace setřídit. Jak sami uznáte, nelze tento postup považovat z efektivní.

Právě proto vznikl DASL (WebDAV Search and Locating). Jedná se o technologii postavenou na základech WebDAVu, která umožňuje prohledávat vlastnosti souborů a kolekcí. DASL je sice vyvíjen již od roku 1998, ale stále ještě nespatřil světlo světa finální RFC dokument. Zatím existuje pouze návrh standardu (internet draft), ale i tak byla do několika softwarových produktů podpora DASL již zařazena.

Obdobně jako WebDAV je i DASL založen na XML a HTTP protokolu. XML dokument plní funkci nositele dotazu (tzn. klient požadavek na vyhledání formuluje prostřednictvím XML elementů) a výsledku vyhledávání. Jelikož DASL využívá protokol HTTP, často se setkáme s tím, že je DASL zabudováván do existujících webových serverů.

Důležitou otázkou je, jakou HTTP metodu k odeslání XML dokumentu použít. Pro tento případ byla vytvořena nová metoda SEARCH, která musí být použita vždy, pokud chceme využít schopnosti a možnosti DASLu. Zda váš server podporuje DASL zjistíte jednoduše odesláním příkazu OPTIONS, který, pokud server DASL podporuje, vrátí mimo jiné hlavičku DASL a informaci o podpoře metody SEARCH. (Hlavička DASL je další novinkou přidanou do protokolu HTTP.) Následující příklad ukazuje odpověď serveru Atlas.cz po odeslání metody OPTIONS:

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 29 Jun 2003 15:33:13 GMT
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL: <DAV:sql>
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK
Cache-Control: private

Gramatika dotazů

Už sice víme, jaký HTTP příkaz použít, ale ještě nemáme vytvořen XML dokument, obsahující dotaz. Gramatika dotazů popisuje, jak má dotaz vypadat. Například gramatika SQL dotazů jasně říká, že pro výběr dat musíme použít klíčové slovo SELECT. DASL ovšem není omezen jednou pevně danou gramatikou, ale může využít i uživatelem definované syntaxe dotazů. Následující příklad ukazuje dvě různé hypotetické gramatiky dotazu. První, založenou na obyčejných větách, a druhou, založenou na principu SQL (ta se mimochodem používá při syntaxi dotazů pro DASL implementovaný v Microsoft Internet Information Server):

<?xml version=“1.0″ encoding=“UTF-8″?>
<D:searchrequest xmlns:D=“DAV:“ xmlns:F=“http://example.com/foo“>
<F:natural-language-query>
   Najdi soubor v adresáři /docs/working/, jejichž velikost je větší než 10Mb a seřaď je sestupně.
</F:natural-language-query>
</D:searchrequest>
<?xml version=“1.0″?>
<D:searchrequest xmlns:D = „DAV:“ >
<D:sql>
   SELECT „DAV:getcontentlength“
   FROM SCOPE (‚DEEP TRAVERSAL OF „/docs/working/“‚)
   WHERE („DAV:getcontentlength“ > 10 000 000)
   ORDER BY „DAV:getcontentlength“ DESC
</D:sql>
</D:searchrequest>

V rámci dokumentu definujícího DASL je popsána i gramatika, které musí rozumět každý DASL server (nazývá se basic search). Jedná se o gramatiku dotazu, která odpovídá struktuře SQL dotazu, ale jednotlivá klíčová slova jsou reprezentována XML elementy.

Nyní se na okamžik vrátíme zpět k hlavičce DASL. Její hodnotu je URI dokumentu (odkaz na DTD), definující serverem podporovanou gramatiku (ve výše uvedené odpovědi serveru Atlas.cz je podporována syntaxe DAV:sql). Pro jasnější představu si ukážeme malý příklad:


DASL: <DAV:basicsearch>
DASL: http://myserver.com/natural-language-grammar.dtd

Server po odeslání příkazu OPTIONS odeslal dvě hlavičky DASL a tudíž podporuje dvě gramatiky použitelné pro vyhledávání.

Jak jsme již uvedli, každý server podporující DASL musí podporovat základní gramatiku dotazů basic search. My si ukážeme, jak by takový dotaz na DASL server měl vypadat (následující příklad vyhovuje současné verzi návrhu):

SEARCH / HTTP/1.1
Host: recipes.test
Content-Type: text/xml
Content-Length: xxx
<?xml version=“1.0″ encoding=“UTF-8″?>
<d:searchrequest xmlns:d=“DAV:“>
<d:basicsearch>
   <d:select>
      <d:prop><d:getcontentlength/></d:prop>
   </d:select>
   <d:from>
      <d:scope>
         <d:href>/docs/working/</d:href>
         <d:depth>infinity</d:depth>
      </d:scope>
   </d:from>
   <d:where>
      <d:gt>
         <d:prop><d:getcontentlength/></d:prop>
         <d:literal>10 000 000</d:literal>
      </d:gt>
   </d:where>
   <d:orderby>
      <d:order>
         <d:prop><d:getcontentlength/></d:prop>
         <d:descending/>
      </d:order>
   </d:orderby>
</d:basicsearch>
</d:searchrequest>

Kontejnerový element searchrequest obsahuje celý dotaz, který je uzavřen v elementu basicsearch označujícím, že se jedná o dotaz používající základní gramatiku definovanou ve specifikaci DASLu. Všimněte si, že názvy jednotlivých elementů odpovídají názvům klíčových slov v jazyce SQL. Element select označuje, jaká vlastnost má být vybrána (v našem případě velikost souboru). Dále následuje element from, jehož obsah definuje oblast hledání (kolekci /docs/working/). Element depth obsahující hodnotu infinity říká serveru, aby prohledal všechny dětské kolekce. Element where definuje klientem zadanou podmínku. Obsah elementu gt (větší než, z anglického „greater than“) říká serveru, že má vybrat soubory jejichž velikost je větší než deset tisíc bytů. Dotaz je ukončen elementem orderby, označující způsob seřazení výsledku (dle velikosti a sestupně – prázdný element descending).

Aplikace

Podpora ze strany aplikací není prozatím velká. Existují sice specializované servery, které podporují DASL spolu s WebDAVem, ale jejich počet by se dal spočítat na prstech jedné ruky. Jedním z příkladů může být projekt Catcomb, jehož výsledkem je modul pro webový server Apache, který pro správu vlastností souborů využívá databázi MySQL.

Zvláštní kapitolu v podpoře DASLu tvoří Internet Information Server, respektive Microsoft SharePoint Portal Server 2001. Kromě toho, že přidává některé vlastní hlavičky (například MS-SEARCH-MAXROWS), používá vlastní gramatiku založenou na jazyce SQL (viz výše uvedený příklad).

Budoucnost?

Prozatím platí, že DASL je stále ještě ve fázi vývoje. Dochází k úpravám především v základní gramatice dotazů. Právě rychlost, s jakou se podaří dokončit specifikaci, bude rozhodující pro rozšíření této technologie. Nemůžeme čekat, že DASL (ostatně stejně jako WebDAV) bude standardní součástí všech webových serverů, ale pro pracovní týmy komunikující prostřednictvím extranetu, intranetu a v rámci podnikových sítí může DASL společně s technologiemi WebDAV a DeltaV znamenat výrazné zjednodušení správy sdílených dokumentů.

Odkazy, zdroje

Předchozí článek martindivis.cz
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *