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





ClassMap

d2rq:ClassMap repräsentiert eine Klasse oder Gruppe von gleichen Klassen einer OWL Ontologie oder eines RDFS Schemas. Eine ClassMap definiert nun wie Instanzen dieser Klasse identifiziert werden. Die ClassMap ist verbunden mit einer d2rq:database und hat ein Set von d2rq:PropertyBridges die den Instanzen Eigenschaften mitgeben



Resource Identity

D2RQ ermöglicht vier verschiedene Mechanismen um die Instanzen in einer Datenbank zu identifizieren:



URI Patterns

Eine URI Pattern durch wird das Einsetzen von Werten der Datenbankspalten in ein Muster instanziert

Beispiele:

http://example.org/persons/@@Persons.ID@@
http://example.org/lineItems/item@@Orders.orderID@@-@@LineItems.itemID@@
urn:isbn:@@Books.isbn@@
mailto:@@Persons.email@@
Die Abschnitte zwischen den @@ Zeichen markieren Datenbankzeilen in der Table.Column Notation. URI Pattern werden mit der d2rq:uriPattern Eigenschaft verwendet
Bestimmte Zeichen wie Leerzeichen die Raute (#) sind in den URIs nicht erlaubt oder haben eine spezielle Bedeutung. Spalten, die solche Zeichen enthalten, müssen zuerst codiert werden bevor deren Werte in die URI Pattern eingefügt werden können
  • Wenn eine Spalte folgendermaßen aussieht: @@Table.Column|urlencode@@ dann wurde URL encoding angewandt bevor die Zeichenkette eingefügt wurde.
  • Wenn eine Spalte folgendermaßen aussieht: @@Table.Column|urlify@@ dann wurde ebenfalls URL encoding angewandt nur zusätzlich wurden Leerzeichen durch Unterstriche ersetzt. Viele Benutzer finden diese Weise leichter lesebarer.
Relative URI Patterns
Relatives URI Pattern ist ein URI Pattern, welches realtive URIs generiert
persons/@@Persons.ID@@
Diese URIs werden dann mit der BASE URI kombiniert um vollständige URIs zur Verfügung zu stellen. Relatives URI Pattern erlaubt die Kreation von portablen MappingFiles, da bei einem gleichen Datenbankschema einfach nur die BASE URI ausgetauscht werden muss.
URI Spalten
Manchmal enthält eine Datenbank schon URIs, die zum identifizieren der Resource verwendet werden können (zb. Homepage, DokumentURLs, ...). URIs können nun mit der d2rq:uriColumns Eigenschaft generiert werden.
Blank Nodes
Bei RDF wird auch das Konzept der 'Blank Nodes' verwendet. Ein RDF Blank Node ist ein RDF Node, welcher selber keine Daten enhält, aber als Parent Node das Gruppieren von Daten zur Verfügung stellt. In D2RQ können Blank Nodes von einer oder mehreren Spalten erzeugt werden. Die Spalten werden mit der d2rq:bNodeIdColums Eigenschaft als Blank Node spezifiziert. Hinweis: mehr Informationen zu Blank Nodes
Singleton Classmaps
Eine d2rq:ClassMap produziert meisten viele Resourcen. Es ist aber manchmal wünschenswert eine ClassMap zu haben, die nur eine einzige, mit statischer Identität Resource produziert wird. In diesem Fall kann man die d2rq:constantValue verwenden um eine einzige Instanze zu verwenden.


Eigenschaften von d2rq d2rq:ClassMap

d2rq:dataStorage

Refernz zur d2rq:Database wo die Instanzdaten gespeichert sind

d2rq:class

Eine RDF-S oder OWL Klasse. Alle Resourcen, die mit dieser ClassMap erzeugt werden, sind Instanzen dieser Klasse

d2rq:uriPattern

Bestimmt das URI Pattern, welches zum Identifizieren der Instanzen dieser ClassMap verwendet wird

d2rq:uriColumn

Eine Datenbankspalte, welche URI-Referenzen für das Identifizieren von ClassMap Instanzen enthält. Dieser Spaltenname muss in folgendem Format sein TableName.ColumnName

d2rq:bNodeIdColumns

Eine Komma-getrennte List von Spaltennamen in TableName.ColumnName Form.

Die Instanzen dieser ClassMap sind Blank Nodes; ein eindeutiger Blank Node pro eindeutigem Tupel dieser Spalten

d2rq:constantValue

Diese ClassMap wird nur eine einzige Instanz heben, welche wie der Wert dieser Eigenschaft heißen wird. Dies kann ein BlankNode oder eine URI sein

d2rq:translateWith

Weist einer ClassMap eine d2rq:TranslationTable zu.

Werte der d2rq:uriColomn oder d2rq:uriPattern werden zuerst übersetzt bevor eine Resource generiert wird.

d2rq:containsDuplicates

Falls ein ClassMap Informationen von nicht vollständig normalisierten Tabellen verwendet, muss diese Eigenschaft angegeben werden. Falls der d2rq:containsDuplicates Wert auf true gestellt wird, dann wird bei jeder Anfrage an die Datenbank ein DISTINCT mitgesendet. False, der Defaultwert, muss nicht explizit angegeben werden.

d2rq:additionalProperty

Fügt eine AdditionalProperty zu allen Instanzen der Klasse hinzu.

d2rq:condition

Beschreibt eine SQL WHERE Anweisung. Eine Instanz der Klasse wird nur mit den Datenbankzeilen erzeugt, welche die Anweisung erfüllen. Diese Anweisungen können dazu verwendet werden um Teile der Datenbank vor D2RQ zu verbergen um beispielsweise Daten die älter bzw. neuer als ein bestimmtes Daten sind nicht anzuzeigen.

ConditionalMappings kommen dabei zum Einsatz.

d2rq:classDefinitionLabel

Beschreibt einen Label in rdfs:label für alle damit verbundenen Class Definitionen. Mehrer Labels beispielsweise in verschiedenen Sprachen werden unterstützt

d2rq:classDefinitionComment

Beschreibt einen Kommentar in rdfs:comment für alle damit verbundenen Class Definitionen. Mehrere Kommentare werden unterstützt

d2rq:additionalClassDefinitionProperty

Fügt eine AddittionalProperty allen Klassendeffinitionen hinzu.

ClassMap Eigenschaft:

d2rq:classMap

Das Gegenkeit zur d2rq:class und unnötig wenn d2rq:class verwedet wird. Legt fest, dass eine d2rq:classMap verwendet wird um OWL oder RDF-S Klassen zu erzeugen

 

Beispiel: ClassMap, wo Instanzen mithilfe von URI Pattern indentifiziert werden

map:PaperClassMap a d2rq:ClassMap;
    d2rq:uriPattern 'http://www.conference.org/conf02004/paper#Paper@@Papers.PaperID@@';
    d2rq:class :Paper;
    d2rq:classDefinitionLabel 'paper'@en;
    d2rq:classDefinitionComment 'A conference paper.'@en;
    d2rq:dataStorage map:Database1.

Die d2ry:calss Eigenschaft gibt an, dass alle Resourcen, welche mit Hilfe der d2rq:ClassMap generiert wurde, Instanzen von eines RDFs oder OWL Klasse sind. Bei D2RQ werden automatisch die notwendigen rdf:type Triple erzeugt.



Example: ClassMap wo BlankNodes verwendet werden

map:Topic a d2rq:ClassMap ;
    d2rq:bNodeIdColumns 'Topics.TopicID' ;
    d2rq:class :Topic ;
    d2rq:classDefinitionLabel 'topic'@en;
    d2rq:classDefinitionComment 'A topic.'@en;
    d2rq:dataStorage map:Database1 .

Um BlankNodes erkennen zu können und um Daten in der Datenbank instanzieren zu können verwendet D2RQ den ClassMap Namen gemeinsam mit den Primarykey Werten in BlankNode Beschriftung.

'http://www.example.org/dbserver01/db01#Topic@@6', die Nummer '6' ist der Primarykey Wert und 'http://www.example.org/dbserver01/db01#Topic' ist der ClassMap Name.

 

Example: ClassMap für eine Gruppe von Klassen mit den selben Eigenschaften

Will man eine ClassMap für eine Gruppe von Klassen mit den selben Eigenschafte (zB.: Person, Professor, Student), die alle von einer bestimmten Klasse abgeleitet sind, so muss man eine rdf:type Anweisung mit einer ObjectPropertyBridge anstatt einer d2rq:class Anweisung verwenden.



map:PersonsClassMap a d2rq:ClassMap ;
       d2rq:uriColumn 'Persons.URI' ;
       d2rq:dataStorage map:Database1 .

map:PersonsType a d2rq:PropertyBridge ;
      d2rq:property rdf:type ;
      d2rq:pattern 'http://annotation.semanticweb.org/iswc/iswc.daml#@@Persons.Type@@' ; 
      d2rq:belongsToClassMap map:PersonsClassMap .

Hier wird für jede Klasse zuerst bei den Eigenschaften der Personen-Klasse nachgesehen. Falls eine Klasse nicht direkt mit der Hilfe der Personenwerte erzeugt werden kann, dann wird eine TranslationTable verwendet um die Werte ins RDF richtig zu exportieren.