SeeAlso

SeeAlsoButton.png
This part of the general documentation of SeeAlso is German - more information in English will be found at the page on The SeeAlso Linkserver Protocol and Getting started with SeeAlso

SeeAlso ist ein von der Verbundzentrale des GBV (VZG) entwickeltes Verfahren zur kontextbezogenen Einbindung von Links in Webseiten. Beispielsweise können mit SeeAlso in einem OPAC von einem Titel zusätzliche Links auf Wikipedia-Artikel oder auf andere Bibliotheken eingebunden werden, die den selben Titel besitzen. Zur Benutzung von SeeAlso werden verschiedene Dienste bereitgestellt, die in eigene Webseiten eingebunden werden können. Das grundlegende Prinzip von SeeAlso besteht auf der Idee eines Webservices, der bei Übergabe eines Identifikators (zum Beispiel einer ISBN) eine dazu passende Liste von Links und/oder Zeichenketten zurückliefert.

Bislang ist SeeAlso nur als beta-Software im Testbetrieb im Einsatz - die Unterstützung für LBS-Systeme folgt in Kürze.


Weitere Informationen

Architektur

SeeAlso-API

Die SeeAlso-API kombiniert unAPI und OpenSearch Suggestions und stellt damit einen Service bereit, der bei Angabe eines Identifikator eine Liste von passenden Links zurückzuliefern.

Wie bei unAPI vorgegeben, gibt es zwei HTTP-Parameter: Ein Identifikator (id) und ein Format (format). Zusätzlich wird bei SeeAlso ein optionaler Parameter callback unterstützt. Eine mögliche Beispielanfrage sieht so aus:

http://example.com/seealso/?id=0815&format=seealso

Das Format, in dem die Links zurückgeliefert werden, entspricht dem Antwortformat von OpenSearch Suggestions. Dabei wird ein Array in JavaScript Object Notation (JSON) zurückgeliefert. Das zurückgelieferte JSON-Objekt enthält URLs und Titel, die von einem Client in beliebiger Weise weiterverarbeitet werden können. Ein Beispiel für eine Antwort (die in diesem Fall nur einen Link enthält) ist:

["0815",["08/15"],["Artikel '08/15' in der deutschsprachigen Wikipedia"],["http://de.wikipedia.org/wiki/08/15"]]

Das Antwortformat wird mit format=seealso festgelegt. Neben SeeAlso können bei Bedarf über unAPI auch weitere Formate angeboten werden. Ohne Angabe eines Identifiers oder bei Angabe eines nicht unterstützen Formats wird wie in der unAPI-Spezifikation festgelegt eine Liste von Formaten zurückgeliefert. Je nachdem, ob zu einem Identifier Links gefunden wurden, wird als HTTP-Status Code 200 (OK) oder 404 (Not Found) zurückgeliefert.

Eine genaue, verbindliche Spezifikation der API befindet sich in Arbeit (SeeAlso Simple Specification und SeeAlso Full Specification).

SeeAlso-Server

Eine Referenzimplementierung eines SeeAlso-Servers ist in Form eines Perl-Moduls gegeben. Die Benutzung ist hinreichend im Modul dokumentiert. Mit Hilfe des Moduls können sehr einfach eigene SeeAlso-Server implementiert werden. Hier ein Beispiel für eine CGI-Datei, die Links über SeeAlso zurückliefert, die in einer Datenbank gespeichert sind:

#!/usr/bin/perl
use CGI;
use SeeAlso::Server;
use SeeAlso::DBISource;

my $cgi = new CGI;
my $id    = SeeAlso::Identifier( $cgi->param('id') );
my $format = $cgi->param('format');

my $source = SeeAlso::DBISource->new("DBI:...", $username, $password);
my $server = SeeAlso::Server->new();

print $server->query( $source, $identifier, $format );

SeeAlso-Clients

Um die Anfrage an einen SeeAlso-Server nicht selber programmieren zu müssen, wird eine einfache JavaScript-API auf Basis von jQuery zur Verfügung gestellt:

Die API beinhaltet JavaScript-Klassen, mit denen einzelne SeeAlso-Services abgefragt und die zurückgelieferten Links angezeigt werden können.

<script src="http://ws.gbv.de/seealso/javascript-client/seealso.js" type="text/javascript"></script>
...

See also: <span id="additional-links"></span>

...

<script type="text/javascript">
var service = new SeeAlsoService( "http://example.com/seealso" ); 
var view = new SeeAlsoUL();

var id = "3-447-03706-7";
var element = document.getElementById("additional-links");

service.queryDisplay( id, element, view );
</script>

Zusätzlich beinhaltet die JavaScript-API eine Methode, die ein HTML-Dokument durchsucht und bestimmte Tags durch Ergebnislisten von Anfragen an vorher festgelegte SeeAlso-Services ersetzt. Dadurch können SeeAlso-Server ohne eine einzige Zeile JavaScript angesprochen werden. Taucht beispielsweise im HTML Folgendes auf:

<div title="3-7643-5826-2" class="isbn2wikipedia seealso-ul"> </div>

so wird bei Aufruf der Funktion zum Einfügen von zusätzlichen Links die ISBN 3-7643-5826-2 an den SeeAlso-Service isbn2wikipedia geschickt. Die zurückgelieferten Links werden anschließend in einfacher, nicht-nummerierer Darstellung (seealso-ul) angezeigt. Dies funktioniert allerdings nur, wenn der mit isbn2wikipedia angegebene Service und die durch seealso-ul angegebene Darstellungsart vorher definiert wurden. Die VZG stellt zentral die JavaScript-Datei http://ws.gbv.de/seealso/my-seealso.js zur Verfügung, die sowohl die JavaScript-API und jQuery enthält, als auch einige Services und Darstellungsarten definiert und direkt nach Laden einer HTML-Seite die Funktion zum ersetzen von HTML-Tags mit zusätzlichen Links aufruft.

Zur vereinfachten Einbindung in Webseiten genügt es also

  1. die Datei http://ws.gbv.de/seealso/my-seealso.js oder eine lokale Kopie einzubinden und
  2. an gewünschter Stelle HTML-Tags mit entsprechenden class-Attributen und einem title-Attribut zu versehen, damit dort zusätzliche Links eingeblendet werden.

Der Client unterstützt mit der CSS-Klasse seealso-container auch die Möglichkeit, Seitenbereiche erst anzuzeigen, wenn darin über SeeAlso ermittelte Ergebnisse vorhanden sind:

<div class="seealso-container" style="display:none;">
  <h2>Artikel in Wikipedia:</h2>
  <div title="3-447-03706-7" class="isbn2wikipedia seealso-ul"> </div>
</div>

Seealso-Container können auch verschachtelt werden.

Es basiert auf class- und title-Attributen eines beliebigen HTML-Elements (üblicherweise ein span oder div), so wie es auch für Microformats und im Identifier Microformat von unAPI verwendet wird. Die Stellen, an denen in einem HTML-Dokument dynamisch Links eingeblendet werden sollen, werden durch ein HTML-Element mit folgenden Eigenschaften gekennzeichnet:

  • im class-Attribut ist angegeben, welcher SeeAlso-Server abgefragt werden soll (SeeAlso-Service) und wie die Ergebnisse dargestellt werden sollen (SeeAlso-View)
  • im title-Attribut steht der an den Server zu schickenden Identifikator.

 

Verfügbare SeeAlso-Webservices

Derzeit werden folgende SeeAlso-Webservices angeboten. Achtung: Der Einsatz läuft bislang nur im Testbetrieb!

  • isbn2wikipedia: Liefert bei Übergabe einer ISBN eine Liste von Links auf Wikipedia-Artikeln, auf denen die ISBN vorkommt (Stand: Ende August 2007).
  • isbn2librarything: Liefert bei Übergabe einer ISBN einen Link auf das entsprechende Werb bei LibraryThing (falls vorhanden) Stand: Ende September 2006
  • pnd2wikipedia: Liefert bei Übergabe einer PND eine Liste mit einem Link auf den entsprechenden Wikipedia-Artikel zur Person (Stand: 9. Oktober 2007: 39727 PND-Nummern und Artikel).
  • pnd2vd17: Liefert bei Übergabe einer PND einen Link auf die Liste der verknüpften Einträge im VD17

Weitere Dienste sind in Planung, Vorschläge sind herzlich willkommen!:

Kurze Anleitung zur Einbindung in eigene Webseiten

Für die vereinfachte Einbindung muss zum einen die JavaScript-Datei http://ws.gbv.de/seealso/my-seealso.js eingebunden werden, die eine Liste von vorkonfigurierten Anwendungen enthält:

<script src="http://ws.gbv.de/seealso/my-seealso.js" type="text/javascript"></script>

Sodann können in der Webseite SeeAlso-Tags verwendet werden, indem in einem HTML-Element das title-Attribut auf einen Identifikator und das class-Attribut auf einen vorhandenen SeeAlso-Service gesetzt wird, z.B. so:

 

Sobald die Webseite vollständig geladen ist, werden für alle auf diese Weise angegebenen Identifikatoren die entsprechenden SeeAlso-Services aufgerufen und dynamisch falls vorhanden entsprechende Kontextlinks an Stelle des Elements mit dem Identifikator eingeblendet.

Die Einbindung führt beispielsweise im GBV-Katalog zu folgender Darstellung für das Buch mit der ISBN 3-7643-5826-2:

Gso-example-bonobo-de.png

Stand der Entwicklung

Bis zum dauerhaften Produktivbetrieb sind noch einige Tests und Erweiterungen notwendig. Eine aktuelle Demo-Umgebung ist bis auf weiteres unter http://ws.gbv.de/seealso/seealso-demo.html und http://ws.gbv.de/seealso/services verfügbar. Inzwischen ist es gleich, ob eine ISBN-10 oder ISBN-13 in Wikipedia steht oder an den Webservice geschickt wird, die ISBN wird normalisiert.

Die deutschsprachige Wikipedia vom 17.12.1007 enthielt

  • ISBN: 262.337
  • Valid: 261.843 (99.81%)
  • Invalid: 494 (0.19%)
  • ISBN-13: 16.145 (6.15%)
  • Artikel mit valider ISBN: 95.307

~ 100.000 Artikel der deutschsprachigen Wikipedia enthalten eine Viertelmillionen ISBN.

Anzahl von ISBN pro Artikel:

  • 1: 47107
  • 2: 19357
  • 3: 9834
  • 4: 5816
  • 5: 3470
  • 6: 2301
  • 7: 1530
  • 8: 1157
  • 9: 895
  • 10: 720

nach oben ist die Anzahl von ISBN pro Artikel praktisch offen, es führen "Portal:Philosophie/Philosophiebibliographie" (354), "Werke von Wolfgang Hohlbein" (212) und "Musik-Konzepte (Periodikum)" (204).

Anzahl von Artikeln pro ISBN:

  • 1: 134065
  • 2: 18978
  • 3: 5421
  • 4: 2364
  • 5: 1228
  • 6: 744
  • 7: 461
  • 8: 355
  • 9: 280
  • 10: 221

Einige wenige Standardwerke werden in mehreren 100 Artikeln erwähnt.

PND2Wikipedia

44410 PNDs zur Zeit

Häufige Fragen

Wird Wikipedia jedesmal direkt abgefragt?  Ob die zusätzlichen Links online (direkt aktuelle) oder offline (aus einem Datenbankabzug) erzeugt werden, hängt vom jeweiligen Service ab. Beim isbn2wikipedia-Service stammen die Links aus einem monatlich aktualisierten Abzug der deutschsprachigen Wikipedia.

Ist die Einbindung von Links mit JavaScript barrierefrei?  Die Einblendung von zusätzlichen Links per JavaScript ist barrierefrei, solange dies nur einmalig beim Laden der Seite geschieht und nicht dynamisch beim Drüberfahren mit der Maus o.Ä.

Wie kann ich Links in meine Seite Einbinden?  Bislang ist die Einbindung nur mit Ausreichend Kenntnissen in HTML möglich. Wenn Sie die HTML-Struktur ihrer Seite nicht direkt ändern können, ist die Einbindung bislang nicht möglich.

Weitere Informationen

Glossar

  • SeeAlso : Ein Verfahren zur Abfrage und Übertragung von kontextbezogenen Links von Linkservern
  • SeeAlso-Server : Ein Webservice, der die SeeAlso-API implementiert und kontextbezogenene Links bereitstellt
  • SeeAlso-API : Die Schnittstellen-Spezifikation für SeeAlso. Basiert auf unAPI und OpenSearch Suggest
    • OpenSearch Suggestions : Eine API-Spezifikation zur Abfrage von Suchvorschlägen
    • JSON : Eine Methode zur Kodierung von Daten in JavaScript-Notation
    • unAPI : Eine einfache Schnittstelle zum Abfragen von Daten über einen Identifikator
  • SeeAlso-Client : Ein Programm, dass einen SeeAlso-Server abfragt
    • SeeAlso-Service : Ein konkreter SeeAlso-Server
    • SeeAlso-View : Eine Darstellungsart einer Linkliste bzw. der Antwort eines SeeAlso-Servers
    • SeeAlso-Tags : Vordefinierte Namen von SeeAlso-Services und eine Art Mikroformat zur Abfrage von SeeAlso-Services und Anzeige mit SeeAlso-Views in Webseiten
  • No labels