Wie bekomme ich meine Daten ins
Semantic Web
Was benötigt ihr System
Herunterladen der Applikation
Entpacken der Applikation
Erzeugen eines MappingFile
Automatisch erzeugtes MappingFile
Konfigurieren des MappingFile
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.
|