Integrationen
Integration in dssCode (Plattform zur Kodierung)
Zugang über dsstools
Wenn du einen Graph importieren möchtest, der zuvor in dssCode kodiert wurde,
gehe dazu in dssCode in deine Profileinstellungen und kopiere das dortige
API-Token. Das ist der Schlüssel für den Zugriff auf die Plattform aus Python
heraus.

Warnung
Committe diesen Schlüssel niemals in Repositories!
Deshalb wollen wir unbedingt vermeiden, das Token in unser Skript zu schreiben. Stattdessen müssen wir es anderweitig übergeben. Das lässt sich am besten über eine sogenannte Umgebungsvariablen erledigen. Eine Umgebungsvariable besteht aus einem Schlüssel und einem Wert, ähnlich wie Items in einem Dictionary in Python.
Für das Token heißt der Schlüssel API_TOKEN und der Wert ist der zuvor aus
dssCode entnommene Wert für das Token. Falls du eine IDE verwendest, findest
du dazu häufig eine Erklärung des Editors. Hier einige Erklärungsseiten für das
Setzen von Umgebungsvariablen von verbreiteten IDEs:
Darüber hinaus gibt es noch eine weitere Möglichkeit, die unabhängig vom Editor
funktioniert: Das Erstellen einer .env-Datei. Diese Datei besteht aus einer
Liste von Umgebungsvariablen, die untereinander geschrieben werden.
Hinweis
.env kann auch für Solr genutzt werden (siehe unten).
Der Inhalt der .env sieht wie folgt aus:
Weitere verwendete Variablen können darunter geschrieben werden. Variablen aus
.env werden gegenüber allgemeinen Umgebungsvariablen vorgezogen.
Projekt-Slug
Weiterhin benötigst du von dssCode das sogenannte
Projekt-Slug. Das ist ein menschenleserlicher String, der keine
Leerzeichen oder Sonderzeichen enthält. Wenn du dich in der
Projektübersicht befindest, steht der Slug in deiner Adresszeile des
Browsers:

In diesem Beispiel wäre das sustainable_investment.
Snapshot
Snapshots dienen dazu, einen festgelegten Zustand aus dssCode zu erhalten. Die Erstellung eines solches Snapshots funktioniert in dssCode über Projektübersicht -> Snapshots -> Snapshot anlegen. Danach erscheint ein neuer Eintrag in der Tabelle darunter. Diese ID muss kopiert werden und ist unser Wert für snapshot in Python.
Hinweis
Diese Snapshot-ID kann committet werden. Das ist sogar sinnig, da andere Personen in deinem Team dann denselben Zustand in ihrem Netzwerk erhalten.
Anwendung
Ein simpler Aufruf sähe dann so aus:
- Das ist ein Platzhalter für die Snapshot-ID
Das kann je nach Größe des Graphs etwas dauern. Standardmäßig wird dieser Aufruf gecached, was bedeutet, das nicht bei jedem Aufruf erneut die API aufgerufen wird. Das reduziert die Last auf dem Server. Dazu musst du aber nichts weiter tun.
Integration in Solr (Index für Textinhalte)
Solr ist ein Interface zum Durchsuchen einer Datenbank von Texten. Die hier vorliegende Implementierung sucht naiv nach den angegebenen Textfragmenten und gibt deren absolute Häufigkeit zurück. Diese Häufigkeiten können dargestellt werden.
Zuerst wird ein Zugang zu dem jeweiligen Server benötigt, Angehörige des
DSS-Lehrstuhls dazu bitte Olaf Kellermeier anfragen. Darüber hinaus ist die
sogenannte Snapshot-ID (oder mehrere) anzufragen. Sobald ihr über Nutzername,
Passwort und Snapshot-ID verfügt, könnt ihr loslegen. Als erstes legt ihr im
Verzeichnis eures Skripts eine .env-Datei mit folgendem Inhalt an:
Das hat den Zweck, dass Passwörter nicht in die Skripte und damit in die
Versionierung aufgenommen werden. Diese Datei auf keinen Falls committen,
sondern via .gitignore ausschließen. dsstools liest die Variablen der
.env-Datei automatisch ein. Sollte keine .env gefunden werden, so wird ein
Fehler ausgegeben.
Anmerkung
Die Umgebungsvariablen können natürlich auf beliebigem Wege angeben werden. Viele Entwicklungseditoren bringen das häufig auch von sich aus mit. Dazu müsst ihr selbstständig recherchieren.
Nun erzeugen wir eine Instanz der Solr-Klasse:
import dsstools as dts
snapshot = dts.Solr(
domain="https://dss-index.wiso.uni-hamburg.de/solr/snapshots", snapshot=id
)
Nachdem wir zu suchende Begriffe definiert haben, senden wir eine Anfrage:
query = [
'"divestment"',
'"sustainable investment"',
]
G, er = snapshot.query_multiple(G, terms=query)
Zurückgegeben wird jeweils der Graph selbst als auch etwaige leere Antworten. Das passiert, wenn der Crawler aus technischen Problemen keine Textinhalte herunterladen konnte oder aber die Webseite insgesamt nicht mehr existiert.
Ab jetzt sind in dem Graphenobjekt unter den Attributen die absoluten Werte für die Texte hinterlegt.
Zeichen von Attributen
Die Solr-Integration schreibt die Daten zu dem Query direkt in das Graph-Objekt unter einem spezifischen String. Um einen Begriff im Graphen für die Darstellung zu verwenden, kommt die Hilfsklasse dts.Code zur Anwendung:
Hier passieren mehrere Dinge gleichzeitig:
dts.Category.TEXTweist den Typ (sprich den Ursprung des Attributes) zu.dts.Category.TEXTsignalisiert Solr als Ursprung,dts.Category.MANUALdagegen manuell kodierte Attribute aus dssCode.dts.Code("divestment", dts.Category.TEXT)erstellt ein Objekt, welches das Attribut "divestment" aus Solr sucht- Das Objekt wird direkt in einen
strumgewandelt. Dieser lautet für das Beispiel"text:divestment"
Hinweis
Wer möchte, kann den obigen String natürlich auch manuell erstellen.
divt kann jetzt als Argument bspw. an nodes.set_sizes() übergeben werden:
Gleiches funktioniert auch für Farben: