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
Property Bridges
PropertyBridges verknüpfen Datenbankespalten mit RDF
Eigenschaften. Sie werden verwendet um Eigenschaften an ein RDF Datei
anzuhängen. Die Werte dieser Eigenschaften sind meisten
Literale, können aber genauso gut URIs oder BlankNodes sein, die
zu einer anderen Resource verweisen (zB.: der Wert eines Buchautors
:author könnte eine URI sein, die eine Person repräsentiert).
Properties
|
d2rq:belongsToClassMap
|
Gibt an, dass die PropertyBridge zu einer d2rq:ClassMap gehört.
Muss für jede PropertyBridge spezifiziert werden
|
|
d2rq:property
|
Die RDF Eigenschaft, welche die ClassMap mit dem von der Bridge
erzeugten Objekt verbindet. Muss ebenfalls für jede
PropertyBridge spezifiziert werden. Werden mehrere d2rq:properties
angegeben, so wird ein Triple mit jeder Eigenschaft pro Resource
erzeugt.
|
|
d2rq:column
|
Für Eigenschaften mit literalen Werten. Spaltennamen
müssen in der Form 'TableName.ColumnName'
gegeben werden.
|
|
d2rq:pattern
|
Für Eigenschaften mit literalen Werten. Diese Eigenschaft
kann verwendet werden um Spaltenwerte zu erweiter bzw. miteinander
zu kombinieren.
|
|
d2rq:sqlExpression
|
Für Eigenschaften mit literalen Werten. Erzeugt literale
Ergebnisse bei der Evaluierung der SQL-Anweisung.
Hinweis: Dadurch können hohe Belastungen für die
Datenbank entstehen bzw. die Performance sehr schlecht werden.
|
|
d2rq:datatype
|
Für Eigenschaften mit literalen Werten. Gibt den RDF
Datentyp der Literale an.
|
|
d2rq:lang
|
Für Eigenschaften mit literalen Werten. Gibt die Sprache
der Literale an.
|
|
d2rq:uriColumn
|
Für Eigenschaften mit literalen Werten. Für
Datenbankspalten, die URIs enthalten. Spaltennamen müssen in
der Form 'Table.Name.ColumnName' angegeben werden.
|
|
d2rq:uriPattern
|
Für Eigenschaften mit literalen Werten. Kann verwendet
werden um Spaltenwerte zu vergrößern bzw. sie
miteinander zu kombinieren bevor sie als URI Eigenschaften
verwendet werden.
|
|
d2rq:uriSqlExpression
|
Für Eigenschaften mit URI Werten und ähnlich zu
d2rq:sqlExpression. Erzeugt URIs durch die Evaluierung
einer SQL-Anfrage (der Output muss eine gültige URI sein).
|
|
d2rq:refersToClassMap
|
Für Eigenschaften die mit einem Foreignkey
korrespondieren. Referenziert zu einer anderen d2rq:ClassMap
welche die Instanz erzeugt, deren Werte verwendet werden. Eine
oder mehrere d2rq:join Eigenschaften müssen spezifiziert
werden, um die richtigen Instanzen zu bekommen.
|
|
d2rq:constantValue
|
Für Eigenschaften, die den selben konstanten Wert in allen
Instanzen der ClassMap haben. Dieser Wert kann literal, ein
BlankNode oder eine URI sein.
|
|
d2rq:join
|
Falls Spalten verwendet werden, die nicht von den
Datenbanktabellen sind, die in der ClassMap angegeben werden, so
muss die d2rq:join Eigenschaft verwendet werden um diese Tabellen
miteinander zu verbinden.
|
|
d2rq:alias
|
Aliases werden dann verwendet, wenn die Tabelle mit sich selbst
verknüpft werden muss.
|
|
d2rq:condition
|
Erzeugt einen SQL WHERE Anweisung. Die Bridge wird nur ein
Statement erzeugen falls die Bedingung erfüllt ist.
|
|
d2rq:translateWith
|
Weist eine d2rq:TranslationTable einer PropertyBridge zu. Werte
von d2rq:column oder d2rq:pattern werden mithilfe der angegebenen
TranslationTable übersetzt.
|
|
d2rq:valueMaxLength
|
Bestimmt, dass alle Werte dieser Bridge nicht länger als
die angegebene Zahl and Zeichen sein darf.
|
|
d2rq:valueContains
|
Bestimmt, dass alle Werte dieser Bridge immer den angegebenen
String enthalten müssen.
|
|
d2rq:valueRegex
|
Bestimmt, dass alle Werte dieser Bridge eine gegebene Regular
Expressen erfüllen müssen.
|
|
d2rq:propertyDefinitionLabel
|
Bestimmt einen Label, der als rdfs:label für alle
angegliederten Eigenschaften mitgeliefert wird. Mehrere Labels zb
in mehreren Sprachen werden unterstützt.
|
|
d2rq:propertyDefinitionComment
|
Bestimmt ein Kommentar, das als rdf:comment für alle
angegliederten Eigenschaften mitgeliefert wird. Mehrere Kommentare
zb in mehreren Sprachen werden unterstützt.
|
|
d2rq:additionalPropertyDefinitionProperty
|
Für eine AdditionalProperty zu allen angegliederten
Eigenschaftendefinitionien hinzu.
|
PropertyBridge Eigenschaft:
|
d2rq:propertyBridge
|
Invers zur d2rq:property und wird nicht gebraucht falls die
d2rq:property verwendet wird. Die d2rq:propertyBridge Eigenschaft
wird verwendet um festzulegen, welche PropertyBridge für das
RDF verwendet wird. Falls die selbe RDF Eigenschaft von mehreren
RDF Klassen verwendet wird, so werden mehrere PropertyBridges
verwendet um die RDF Eigenschaften mit den verschiedenen ClassMaps
miteinander zu verknüpfen.
|
Example: eine einfache PropertyBridge
map:PaperTitle a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Paper;
d2rq:property :title;
d2rq:column 'Papers.Title';
d2rq:lang 'en';
d2rq:propertyDefinitionLabel 'title'@en;
d2rq:propertyDefinitionComment 'A paper's title.'@en;
.
Hier wird eine :title Eigenschaft allen Resourcen hinzugefügt, die
mit der map:Paper ClassMap erzeugt werden. Die Werte der
verschiedenen Eigenschaften werden von der Papers.Title Spalte
genommen. Die generierten Literale werden alle den Sprachen-Tag „en“
besitzen.
Example: PropertyBridge verwendet Informationen von
anderen Datenbanktabellen
map:authorName a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Papers;
d2rq:property :authorName;
d2rq:column 'Persons.Name';
d2rq:join 'Papers.PaperID = Rel_Person_Paper.PaperID';
d2rq:join 'Rel_Person_Paper.PersonID = Persons.PerID';
d2rq:datatype xsd:string;
d2rq:propertyDefinitionLabel 'name'@en;
d2rq:propertyDefinitionComment 'Name of an author.'@en;
.
Diese PropertyBridge fügt den Namen des Autors, der das Paper
geschrieben hat hinzu. Falls ein Paper mehrere Autoren besitzt, so
werden mehrere :authorName Eigenschaften hinzugefügt. Die
Tabellen Papers und Person sind in einer n:m Relation. Der d2rq:join
wird verwendet um die Tabellen über die Rel_Person_Paper Tabelle
miteinander zu verknüpfen.
Example: Eine PropertyBridge mit mailto:URIs
map:PersonsClassEmail a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:PersonsClassMap;
d2rq:property :email;
d2rq:uriPattern 'mailto:@@Persons.Email@@';
.
Die Struktur mailto:@@Person.Email@@
wird verwendet um um das mailto: Prefix zu den Werten der
„Person.Email“ Spalte hinzuzufügen. Dieses Beispiel
verwendet d2rq:uriPattern anstatt von d2rq:pattern weil diese Bridge
URISs und nicht Literale produzieren soll.
Example: Eine PropertyBridge, die Mailboxhashes berechnet
Ein populäres FOAF
vocabulary hat eine foaf:mbox_sha1sum Eigenschaft für das
Veröffentlichen von Emailadressen in codierter Form.
map:UserEmailSHA1 a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:User;
d2rq:property foaf:mbox_sha1sum;
d2rq:sqlExpression 'SHA1(CONCAT('mailto:', user.email))';
.
Der Wert von foaf:mbox_sha1sum werden berechnet indem die
d2rq:sqlExpressen evaluiert wird. Zuerst wird eine mailto: URI von
der Emailadresse erzeugt. Dannach wird die SHA1 Hash-Funktion
ausgeführt. Das Resultat ist ein literaler Wert.
Hinwei: Das Bekommen der foaf:mbox_sha1sum Werte benötigt
verursacht viele Datenbankzugriffe und verringert die Performance der
Datenbank. Für größere Datenbanken ist es daher
klüger, die verschlüsselten Werten in einer Datenbankspalte
in der Datenbank selbst zu speichern.
Example: Verbinden von zwei Datenbanktabellen
map:PaperConference a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Paper;
d2rq:property :conference;
d2rq:refersToClassMap map:Conference;
d2rq:join 'Papers.Conference = Conferences.ConfID';
.
Dieses Beispiel verbindet einen :conference Eigenschaft zu Paper. Die
Werte dieser Eigenschaft werden von der map:Conference ClassMap
(nicht hier angezeigt) erzeugt. Es können d2rq:uriPattern,
d2rq:uriColumn oder BlankNodes zum Identifizieren der Konferenzen
verwendet werden. Um die passende Instanz zu finden, muss man die
d2rq:join auf den ForeignKey Papers.Conferenc verwenden.
Example: Das Joinen einer Tabelle mit sich selbst
map:ParentTopic a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Topic;
d2rq:property :parentTopic;
d2rq:refersToClassMap map:Topic;
d2rq:join 'Topics.ParentID = ParentTopics.ID';
d2rq:alias 'Topics AS ParentTopics';
.
Ein Topic hat vielleicht ein übergeordnetes Topis, dessen ID in
der Topics.ParentID Spalte gefunden werden kann. Dieser ForeignKey
referenziert zurück auf die Topics.ID Spalte. Die Tabelle hat
also einen Join auf sich selbst. Ein d2rq:alias is deklariert und der
join ist zwischen der Originaltabelle und der Aliastabelle aufgebaut.
Diese Struktur ist für hierarchische Strukturen typisch.
Example: Hinzufügen eines konstanten Eigenschaft-Wert
Paar zu jeder Instanz einer ClassMap
Manchmal ist es wünschenswert eine Eigenschaft mit einem
konstanten Wert zu jeder Resource, die mit einer ClassMap erzeugt
wurden hinzuzufügen. Die kann mit der d2rq:constantValue
erreicht werden.
map:PersonsClassMap a d2rq:ClassMap;
d2rq:class :Person;
.
map:seeAlsoBridge a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:PersonsClassMap;
d2rq:property rdfs:seeAlso;
d2rq:constantValue <http://annotation.semanticweb.org/iswc2003/>;
.
Dies füngt ein rdfs:seeAlso Statement mit einer fixen URL zu
jeder Instanz der map:PersonClassMap ClassMap.
|