Yahoo Query Language


Einführung

YQL ist ein Webdienst, der es Anwendungen ermöglicht, aus verschiedenen Datenquellen im Internet Daten abzufragen, zu filtern und zu kombinieren. YQL basiert auf einer reduzierten Form der Structured Query Language (SQL), die sich als Standard für die Abfrage von relationalen Datenbanken etabliert hat. In relationalen Datenbanken werden die Daten in Tabellen gespeichert.


YQL verwendet drei SQL-ähnliche Statements:

Von zentraler Bedeutung ist das SELECT-Statement:
SELECT what FROM table WHERE filter

Eine typische Abfrage:

SELECT * FROM flickr.photos.search WHERE text="Library"



Tabellen in Form von XML-Dateien übernehmen das Mapping der Abfrage. So werden z.B. der Pfad zur Ergebnisliste und einzelne Abfrageparameter festgelegt.

Übersicht über alle angebotenen Tabellen: show tables

Die Abfrage kann mit Hilfe der REST-Schnittstelle (Representational State Transfer) als URL dargestellt werden. YQL erzeugt einen Aufruf einer Callbackfunktion (cbfunc), mit dem die Ergebnisse der Datenbankabfrage als Parameter übergeben werden. Der Name "cbfunc" kann durch eine eigene Bezeichnung ersetzt werden.


Beispiele

1. arXiv.org

Abfrage des Repository arXiv.org:

select * from arxiv.search where search_query="all:mashup"



Die Daten werden in JSON (JavaScript Object Notation) ausgegeben und können mittels Javascript weiterverarbeitet werden. Zunächst wird innerhalb der Funktion arxiv der Variablen items der Pfad zur Ergebnisliste zugewiesen. Danach wird var output initialisiert. Die einzelnen Elemente werden entsprechend der Hierarchie weiteren Variablen zugewiesen, bevor sie schliesslich mit output ausgegeben werden. Am Ende der Seite befindet sich innerhalb der Script-Tags die REST-Url aus der Konsole mit dem Aufruf der Callback-Funktion.



]]>




2. EU-Dokumente

EU-Dokumente werden über eine API der Firma Buhl u. Rasmussen, die sich in den Bereichen open data und open government engagiert, zugänglich gemacht. Zur Nutzung der Schnittstelle muss ein API-Key beantragt werden, der kostenlos vergeben wird.

Dokumentation der API

Beispiel für die Verwendung von Open Data: EU-Rechtsakte nach Generaldirektionen

Mit Hilfe der Tabelle euparliament.eurlex.directory können auf Eur-Lex veröffentlichte Dokumente nach Sachgruppen (Directory Code) aufgerufen werden.


SELECT * FROM euparliament.eurlex.directory WHERE dc="07.40.30.00" AND key="API-Key"






3. Deutsche Nationalbibliothek

Die D-NB bietet zwar RSS-Feeds zum Abonnement von Recherchen an, deren Links basieren allerdings auf dem https-Protokoll, das nicht von jedem Webdienst verarbeitet werden kann. Mit YQL dagegen kann dieses Protokoll aufgerufen werden. Eine Recherche nach Neuerscheinungen zum Europarecht führt zu folgendem Ergebnis


Link: DDC-Suche



select * from feed where url='https://portal.d-nb.de/opac.atom?currentResultId=ddc%253D349.2%2Band%2Bjhr%253D2011-%2526any&method=search'



Ein Beispiel für die Integration von Daten aus verschiedenen Quellen (hier: D-NB und BASE):
DDC-Browsing



4. Google Custom Search Engine (CSE)


SELECT * FROM google.customsearch WHERE q="gentechnik" and cx="009358653441533147048:wutem9kf1w8" and api-key="API-KEY"



Auch Google bietet eine API für die Ausgabe im JSON-Format an, die allerdings noch weiter entwickelt wird (Status: In labs), so dass mit unerwarteten Änderungen gerechnet werden muss.

http://code.google.com/intl/de/apis/customsearch/v1/overview.html

Beispiel für eine benutzerdefinierte Suche mit Daten im JSON-Format: Rechtsprechung




Nachtrag zum Vortag
Abfrage des GVK über die SRU-Schnittstelle mit YQL. Die Daten stehen in JSON und XML zur Verfügung.

USE "http://www.ahb.niedersachsen.de/tables/gbv.xml" AS gbv.sru;
SELECT * FROM gbv.sru WHERE q="pica.all+='gentechnik'" and Schema="pica_b" and Anzahl="20";