Version 0.2
(C) Christian Volmer, Daniel Kirstenpfad - 2001-2004
TQL = TFSNA Query Language. Eigentlich keine echte Sprache vielmehr ein Skript um TFSNA mitzuteilen was wie gesucht werden soll, auf welche Weise gefiltert und sortiert und letztendlich ausgegeben werden soll.
Ein TQL Skript ist grundsätzlich folgendermassen aufgebaut:
1. Die Query Zeile
Hier wird der Suchtyp festgelegt. Die Query Zeile unterscheidet sich im Aufbau je nach Suchtyp:
Suchtyp | Beispiel | Parameter |
---|---|---|
Standard Suchanfrage | query url what= "suchbegriff" |
whatgibt an welche Suchbegriffe (Boolsche Operatoren möglich; siehe Abschnitt "Suchbegriffe formulieren") Syntax:
full_path_comparedieser Parameter legt fest, ob die Suchbegriffe auch im gesamten Pfad oder nur innerhalb des Dateinamens gesucht werden sollen. Der Parameter kann entweder 1 (eingeschaltet) oder 0 (ausgeschaltet) sein. Syntax:
|
Browse Anfrage | query browse db="ftp_1234" |
dbWelche Datenbank soll durchsucht werden. Hier wird die Datenbank ID angegeben (db.id) Syntax:
dirWelches Verzeichniss soll als Startverzeichniss gewählt werden. Es darf kein Slash am Anfang stehen. Syntax:
|
Datenbank Listing | query dblist | keine Parameter |
2. Filter
Um die Suchergebnisse zu filtern, können einfach Filter Zeilen im TQL Script angegeben werden. Es können beliebig viele Filter hintereinander geschaltet werden.
Die Syntax ist immer die gleiche:
filter <Datentyp> <Filterattribut> by="<Filterkriterium>" <value="<wert>"/ <hi="obere grenze" lo="untere grenze" / <matches= "*/?/text" <ignore_case= 1>>>
Das Filterattribut gibt wie der Filter eingesetzt werden soll. Im Normalfall wird "full" verwendet. Bei einer Datenbank-spezifischen Filterung aber wird z.B. "db" verwendet. Als Filterkriterium kann jede verfügbare Resource-Info verwendet werden.
Folgende Übersicht zeigt die momentan verfügbaren Resource Info Klassen:
![]()
![]()
Resource Info Handler, die Zahlenwerte enthalten (Int32 oder Int64) müssen mit Ober- und Untergrenze gefiltert werden. Resource Info Handler mit Text (String) müssen mit direkter Angabe des Filter-Textes oder einer passenden "matches" Angabe gefiltert werden. In der "matches" Angabe sind Platzhalter (*) erlaubt. Der "matches" Parameter kann weiterhin dazu veranlasst werden Case-Insensitive zu arbeiten (ignore_case)
Beispiel:
Zahlenwerte:
filter int32 full by="media.audiobitrate" hi="44100" lo="22000"
Zeichenfolgen:
filter string db by=file.svrspec1 matches="*mp3" ignore_case="1"
filter string full by=file.svrtype value="FTP"
3. Sortieren
Um die Suchergebnisse zu sortieren kann ein Sortierer zwischengeschaltet werden. Momentan kann nur ein Sortierer pro TQL Anfrage benutzt werden. Es können momentan ausschliesslich Zahlenwerte sortiert werden (Int32 und Int64). Die Syntax ähnelt der der Filter. Im Gegensatz zu den Filtern wird jedoch nur das Sortierkriterium angegeben, ob nicht zutreffende Werte entfernt werden sollen, und ob auf- oder absteigend sortiert werden soll.
Syntax:
sort <Datentyp> full by="<Filterkriterium>" <remove_na=<wert> ascending=<wert>>>
Als Datentyp kommt momentan nur Int32 und Int64 in Frage. Das Filterattribut ist zwingend "full". Das Filterkriterium kann frei aus den vorhandenen Resource Info Handlern gewählt werden (siehe Übersicht bei "Filtern"). Der Parameter "remove_na" ist eine Boolean-Entscheidung und kann, genauso wie "ascending" nur den Wert 0 oder 1 haben.
Beispiel:
Zahlenwerte:
sort int32 full by="media.audiobitrate" remove_na="0" ascending="1"
4. Ausgabe/Listen
Als nächstes muss ausgewählt werden, welche Informationen letztendlich vom TFSNA2 Server zurückgeliefert werden sollen. Dies wird einfach durch die "list" Zeile realisiert. Sie besteht aus dem Befehl "list" und einer durch Leerzeichen getrennte Aufzählung der Resource Info Handler die ausgegeben werden sollen. Es können nicht alle Resource Info Handler ausgegeben werden, sondern nur die in der Übersicht entsprechend gekennzeichneten.
Alle Ergebnisse werden momentan als Strings, also Zeichenketten, ausgegeben.Es kann festgelegt werden welchen Datentyp die zurückgelieferten Ergebnisse haben. Hierzu wird nach dem Namen des Resource Info Handlers der gewünschte Datentyp mit einem ! und dem Buchstaben für den jeweiligen Datentyp angegeben. Standardmässig werden alle Resource Info Handler als Zeichenkette (string) zurückgeliefert.
Gültige Datentypenabkürzungen:
Abkürzung Datentyp !s string !i int64 !b binary
Beispiel:
list media.info!s file.size!i file.svrspec2!s url.url!s
5. Ende
die letzte Zeile des TQL Skripts besteht IMMER aus einem "end".
6 Beispiel TQL Skripte
Standardsuchanfrage ohne spezielle Parameter:
query url what="mp3" full_path_compare=1
list 0 150 file.svrspec1 file.size2 file.modified url.url
end
Dieser TQL Skript sucht nach "mp3". Es werden ganze Pfade verglichen bei der Suche. Ausgegeben werden die Daten file.svrspec1, file.size2, file.modified und url.url
Browseanfrage:
query browse db="" dir=""
list 0 150 file.svrspec1 file.size2 file.modified url.url
endServer Top10:
query dblist
sort int64 full by=file.totalsize ascending=0
list 0 150 file.svrspec1 file.size2 file.modified db.id
end