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
ConditionalMappings
Manchmal sollen nur bestimmte Informationen einer Datenbank
verfügbar sein, da Teile davon vertraulich bzw. nicht für
alle sichtbar sein soll. Mit einer d2rq:condition können
Bedingungen eingestellt werden, die von allen zugänglichen Daten
erfüllt werden müssen.
Eine d2rq:condition kann auf ClassMap und PropertyBridge Ebene
verwendet werden. Der d2rq:condition Wert ist als eine zusätzliche
SQL WHERE Bedingung zu allen Anfragen, die die ClassMap bzw.
PropertyBridge verwenden hinzugefügt. Falls die Bedingung nicht
erfüllt wird für eine SQL Result Set Reihe, so werden keine
Daten von dieser Reihe erzeugt.
Beispiel: d2rq:condition bei einer d2rq:ClassMap
map:Paper a d2rq:ClassMap;
d2rq:class :Paper;
d2rq:uriPattern "http://www.conference.org/conf02004/paper#Paper@@Papers.PaperID@@";
d2rq:condition "Papers.Publish = 1";
d2rq:dataStorage map:Database1.
Nur die Papers mit dem Wert 1 in der Papers.Publish Spalte werden
verwendet. Alle anderen Papers werden ignoriert.
Beispiel: Filtern von Strings mit keiner Länge
Normalerweise wird in Datenbanken der Wert NULL verwendet, falls
das Feld keinen Wert hat oder der Wert dieses Feldes nicht bekannt
ist. Manche Datenbanken verwenden aber stattdessen einen String mit
keiner Länge (""). D2RQ erzeugt allerdings keine RDF
Statements von NULL Werten, allerdings werden Strings mit keiner
Länge erkannt und es werden Statements wie beispielsweise
:Person123 :firstName "". erzeugt, falls der
Vorname der Person ein String mit keiner Länge ist.
Um solche Statements zu verhinder, kann eine d2rq:condition zu
einer PropertyBridge hinzugefügt werden:
map:PersonsClassFirstName a d2rq:PropertyBridge;
d2rq:property :firstName;
d2rq:column "Persons.FirstName";
d2rq:belongsToClassMap map:PersonsClassMap;
d2rq:condition "Persons.FirstName <> ''".
Beispiel: Relationship type codes
Es gibt eine Tabelle Rel_Paper_Topic die Reihen von einer Paper
Tabelle mit Reihen einer Topics Tabelle verbindet. Die
Rel_Paper_Topic Tabelle enthält eine PaperID Spalte, die zu
Papers referenziert, eine TopicID Spalte, die zu den Topics
referenziert und eine RelationshipType Spalte, die 1 enthält,
falls das Topic ein primäres Topic des Papers ist und 2 falls es
sich um ein sekundäres Topic handelt.
Für primäre Topics soll die :primaryTopic Eigenschaft
verwendet werden und für die anderen die :secondaryTopic
Eigenschaft.
Diese Problem kann man mit zwei PropertyBridges lösen. Eine
für :primaryTopic und eine für :secondaryTopic. In beiden
PropertyBridges wird eine d2rq:condition hinzugefügt um jeweils
die Statements zu unterbinden, die einen falschen RelationsipType
haben.
map:primaryTopic a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Paper;
d2rq:property :primaryTopic;
d2rq:refersToClassMap map:Topic;
d2rq:join "Papers.PaperID = Rel_Paper_Topic.PaperID";
d2rq:join "Rel_Paper_Topic.TopicID = Topics.TopicID";
d2rq:condition "Rel_Paper_Topic.RelationType = 1".
map:secondaryTopic a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Paper;
d2rq:property :secondaryTopic;
d2rq:refersToClassMap map:Topic;
d2rq:join "Papers.PaperID = Rel_Paper_Topic.PaperID";
d2rq:join "Rel_Paper_Topic.TopicID = Topics.TopicID";
d2rq:condition "Rel_Paper_Topic.RelationType = 2".
|