Best Practice


  1. Wie bekomme ich meine Daten ins Semantic Web

    1. Was benötigt ihr System

    2. Herunterladen der Applikation

    3. Entpacken der Applikation

    4. Erzeugen eines MappingFile

      1. Automatisch erzeugtes MappingFile

      2. Konfigurieren des MappingFile

      3. Erzeugen der RDF Datei





Database:


Eine d2rq:Database Anweisung definiert eine JDBC oder ODBC Verbindung zu einer lokalen Datenbank und spezifiziert die Typen der Datenbankzeilen. Eine D2RQ Map kann mehrere d2rq:Database Anweisungen beinhalten, um das Zugreifen auf verschiedene lokale Datenbanken zu gewährleisten.


Eigenschaften

d2rq:jdbcDSN

Die JDBC Datenbank URL. Dies ist eine Zeichenfolge von folgender Form: jdbc:subprotocol:subname

Für eine MySQL Datenbank sieht eine solche URL ungefähr so aus:

jdbc:mysql://hostname:port/dbname

Beispiele für andere Datenbanken

d2rq:jdbcDriver

Der JDBC Treiber Klassenname für die Datenbank.

Beispiel: com.mysql.jdbc.Driver für MySQL

d2rq:odbcDSN

Die ODBC Datenquelle für die Datenbank

d2rq:username

Der Username mit dem auf die Datenbank zugegriffen wird

d2rq:password

Das Passwort für den Usernamen mit dem auf die Datenbank zugegriffen wird

d2rq:resultSizeLimit

Ein Integerwert, der angibt wieviele Ergebnisse von einer SQL-Anweisung MAXIMAL zurückgegeben werden dürfen.

Dies ist vorallem bei sehr großen Datenbanken sinnvoll um zu große ResultSets zu vermeiden bzw. um die Datenbank nicht zu sehr zu belasten.

d2rq:allowDistinct

Ermöglicht die Einstellung, ob es der Datenbank möglich ist mit DISTINCT richtig umzugehen.

Beispielsweise MSAccess schneidet Felder ab, die länger als 256 Zeichen sind.

d2rq:textColumn
d2rq:numericColumn
d2rq:dateColumn
d2rq:timestampColumn

Diese Eigenschaften werde verwendet um den Spaltentyp von Datenbankspalten zu bestimmen. Werte für die Spaltentypen sind folgendermaßen anzugeben Table_name.column_name

Hinweis: Diese Eigenschaften sind nicht anzugeben, außer aus welchen Gründen auch immer, die Applikation schafft es nicht den korrekten Spaltentypen von selbst zu finden.

d2rq:timestampColumn ist für Spaltentypen die Zeit und Datum kombinieren

Hier ein Beispiel

map:Database1 a d2rq:Database;
              d2rq:jdbcDSN 'jdbc:mysql://localhost/iswc';
              d2rq:jdbcDriver 'com.mysql.jdbc.Driver';
              d2rq:username 'user';
              d2rq:password 'password';
              d2rq:numericColumn 'Conferences.ConfID';
              d2rq:textColumn 'Conferences.URI';
              d2rq:textColumn 'Conferences.Name';
              d2rq:textColumn 'Conferences.Location';
              d2rq:dateColumn 'Conferences.Date'.

Bestimmen der JDBC Verbindungseinstellungen

Die meisten JDBC Treiber stellen eine große Anzahl von JDBC Verbindungseinstellungen zur Verfügung, welche erweiterte Konfigurationen für die JDBC Datenbankverbindung ermöglichen.

Ein D2RQ MappingFile kann für die Verwendung von beliebigen Verbindungseinstellungen beim Eröffnen der JDBC Verbindung verwendet werden. Dies wird mithilfe des jdbc:namespace ermöglicht (namespace URI: http://d2rq.org/terms/jdbc). RDF Eigenschaften in diesem Namespace werden als Verbindungseinstellungen mitgegeben.

Welche Eigenschaften bei ihrem JDBC Treiber möglich ist entnehmen Sie bitte der Dokumentation ihres JDBC Treibers.

Beispiel:

Dieses Beispiel verwendet zwei Verbindungseinstellungen, die MySQL JDBC Treiber möglich sind: autoReconnect=true und zeroDateTimeBehavior=convertToNull

@prefix jdbc: <http://d2rq.org/terms/jdbc/> .

map:database a d2rq:Database;
    # ... other database configuration ...
    jdbc:autoReconnect 'true';
    jdbc:zeroDateTimeBehavior 'convertToNull';


Aufrechterhalten langer Verbindungen

Manche Datenbankenserver wie beispielsweise MySQL schließen Openclient Verbindungen nach einem bestimmten Zeitinterval (MySQL standardmäßig nach 12 Stunden). Um diese Verbindungen aufrecht zu erhalten, kann D2R so konfiguriert werden, dass periodisch sogenannte 'noop' Anfragen an die Datenbank gesendet werden. Diese Feature kann mit der jdbc:keepAlive Einstellung aktiviert werden.

Beispiel:

@prefix jdbc: <http://d2rq.org/terms/jdbc/> .

map:database a d2rq:Database;
    # ... other database configuration ...
    jdbc:keepAlive '3600'; # value in seconds
    jdbc:keepAliveQuery 'SELECT 1'; # (optional auch durch eine andere noop Anfrage ersetzbar)
    

Die standardmäßige noop Anfrage ist 'SELECT 1', was vielleicht mit manchen DBMS nicht funktioniert. In diesem Fall ist einfach die Standardabfrage mit einer andere zu überschreiben.