Jupyter-Notebooks und ArcadeDB

Ergebnisse von Datenbank-Abfragen werden für eine Ausgabe in Jupyter Notebooks vorformatiert. Die Methode html_attributes steuert die Darstellung sowohl für die Ausgabe von Datenbank-Objekten wie auch die von Listen.

Ein Jupyter-Notebook ist eine webbasierte interaktive Rechenumgebung, in der Code, beschreibender Text und Visualisierungen in einem einzigen Dokument kombiniert werden. Es werden verschiedene Programmsprachen unterstützt, darunter auch Ruby.

IRuby

Jupyter Notebooks können einen aktuellen Ruby-Kernel laden und dann Ruby-Programme ausführen. Auf der Ruby-Seite muss nur das iruby-Gem eingebunden werden.

## Gemfile
gem "arcadedb" 
gem 'iruby'
(  )

Formatierung der Ausgabe

Die Ausgabe in Jupyter Notebooks wird über die Methoden IRuby.display, IRuby.html und IRuby.table gesteuert. Ruby-Objekte stellen sich über die Methode to_html dar.

In ArcadeDB ist die Ausgabe von Datenbankinhalten in lib/arcade/base.rb wir folgt formuliert

def to_html  # iruby
  the_rid = "[#{rid}] : {#{self.in.count}->}{->#{self.out.count }}"
  IRuby.display IRuby.html "<span style=\"color: #50953DFF\">
                                  <b>#{self.class}</b>
                                  #{the_rid}
                            </span>
                            < #{html_attributes.map{|_,v| v }.join(', ')} >"
end

Falls die Methode nicht überschrieben ist, wird bei Vertices zunächst die Datenbank-Klasse ausgegeben, gefolgt von der RID-des Datensatzes und der Anzahl ein- und ausgehender Edges, alles grün. Es folgt eine Liste der Werte der in der Methode html_attributes definierten Datenbankfelder.

Member.find name: ‘Gross’
Member[#49:43] : {0->}{->0} < Frau, Maria, Gross, Lüneburg, Hauptstr. 12a >

Arcadedb#find lädt einen (member) Datensatz und stellt ein Member-Objekt zur Verfügung. iruby stellt dies über die dessen Methode to_html dar. Arcadedb#where gibt ein Array zurück, das über die Methode Array.to_html` eine Tabelle ausgibt.

Member.where name: ‘Gross’


SexVornameNameOrtStraße
FrauMariaGrossLüneburgHauptstr. 12a

Beide Ausgaben werden durch die Methode html_attributes mit Leben erfüllt:

def html_attributes  # standard
  invariant_attributes
end



def html_attributes  # customized
 {     Sex: :sex,
   Vorname: :surname,
      Name: :name,
       Ort: :town,
    Straße: :street } 
end

Im Ergebnis können alle Datenbankausgaben über die Methode html_attributes im Model-File an die Bedürfnisse angepasst werden. Dies ist ein vertretbarer Aufwand für die Adaption an Jupyter-Notebooks.