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





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.