Tipps und Tricks IoT Studienarbeiten Diplomarbeiten Seminararbeiten RDFtoXML HTML Privates Suche |
|
Startseite > Studienarbeiten > Seminararbeiten > RDFtoXML
|
|
Projektseminar - Applikationen zur Behandlung von RDF - Modellen
Universität GH Essen
Lehrstuhl für Wirtschaftsinformatik und Softwaretechnik
(Prof. Dr. G. Neumann)
Projektseminar
zum Thema
Applikationen zur Behandlung von RDF-Modellen
im Sommersemester 1999
bearbeitet von
Wolfgang Büning
Am Großen Kamp 8
46342 Velen
Matr.-Nr. 206545
Betreuer: Diplom-Wirtschaftsinformatiker Reinhold Klapsing
Inhaltsverzeichnis
1. Anforderungsanalyse
2. Design
2.1 Klassen
2.2 Funktionen
3. Implementierung
4. Bedienung
5. Beispiele
5.1 Beispiele für die Erstellung
von XML-Dateien in der Basic Serialization Syntax
5.2 Beispiele für die Erstellung
von XML-Dateien in der Basic Abbreviated Syntax
5.3 Sonstige Beispiele
Source-Code
1. Anforderungsanalyse
Im Rahmen des Projektseminars soll ein Programm entwickelt werden,
das RDF-Modelle, die als Triple in einer Datei gespeichert sind, in XML-Dateien
transformiert. Dabei soll die Möglichkeit bestehen, die XML-Dateien
in der Basic Serialization Syntax oder alternativ in der Basic Abbreviated
Syntax abzuspeichern. Diese Aufgabe soll mit der Programmiersprache XOTcl
realisiert werden. XOTcl ist eine Erweiterung von OTcl, die wiederum eine
Erweiterung von TCL ist.
Aus der Aufgabenstellung ergeben sich folgende Funktionen, die in das Programm
implementiert werden müssen:
Einleseroutine für die RDF-Triple
Interne Repräsentation der RDF-Triple
Transformation der RDF-Triple in XML
Speicherroutine für die XML-Dateien
2. Design
2.1 Klassen
Um die Projektanforderung zu erfüllen, werden folgende Klassen
erstellt:
-
Klasse zur internen Speicherung der Triple: Statement
-
Klasse zum Organisieren der Triple: Statementorg
-
Klasse zum Erstellen der XML-Repräsentation in der Basic Serialization
Syntax: CreateXMLBSS
-
Klasse zum Erstellen der XML-Repräsentation in der Basic Abbreviated
Syntax: CreateXMLBAS
-
Klasse zum Lesen und Parsen einer Triple-Datei: TripleFileRead
-
Klasse zum Speichern einer XML-Datei: XMLFileWrite
Zusätzlich zu den sich aus der Anforderungsanalyse ergebenden Klassen
werden folgende Klassen für die Behandlung von Namespaces benötigt:
-
Klasse zur internen Speicherung der Namespaces: Namespace
-
Klasse zum Organisieren der Namespaces: Namespaceorg
Zwischen den Klassen bestehen folgende Beziehungen:
-
Objekte der Klasse Statement werden über die Klasse Statementorg angelegt
und verwaltet
-
Objekte der Klasse Namespace werden über die Klasse Namespaceorg angelegt
und verwaltet
Im einzelnen gibt es folgende Nutzungsbeziehungen zwischen den Klassen:
-
Statementorg benutzt Objekte der Klasse Statement
-
Namespaceorg benutzt Objekte der Klasse Namespace
-
TripleFileRead benutzt ein Objekt der Klasse Statementorg
-
CreateXMLBSS und CreateXMLBAS benutzen Objekte der Klassen Statementorg
und XMLFileWrite
2.2 Funktionen
Im folgenden werden die zentralen Funktionen der
einzelnen Klassen genauer beschrieben.
Funktionen der Klasse Statement
-
init {predicate subject object} : Konstruktor der
Klasse Statement mit den Übergabeparametern Prädikat, Subjekt
und Objekt zum Anlegen des Triples
-
getPredicate {}, getSubject {}, getObject {} : Funktionen
zum Abfragen des Prädikats, Subjekts oder Objekts aus dem aktuellen
Objekt
-
setPredicate {predicate}, setSubject {subject}, setObject
{object} : Funktionen zum Ändern des Prädikats, Subjekts oder
Objekts im aktuellen Objekt
Funktionen der Klasse Statementorg
-
addStatement {predicate subject object} : Funktion
zum Anlegen eines neuen Statement-Objekts mit den angegebenen Triple-Informationen
-
returnAllPredicates {} , returnAllSubjects
{} , returnAllObjects {} : Funktionen, die eine Liste aller Prädikate,
Subjekte bzw. Objekte zurückliefern
-
resetStatementCounter {} : setzt den Cursor für
das aktuelle Statement-Objekt auf null
-
incrStatementCounter {} : erhöht den Cursor
für das aktuelle Statement-Objekt um eins
-
getStatementCounter {} : liefert die aktuelle Cursor-Position
zurück
-
setStatementCounter {sC} : setzt den Cursor für
das aktuelle Statement-Objekt auf sC
-
getActPredicate {} , getActSubject {} , getActObject
{} : liefern das Prädikat, Subjekt bzw. Objekt vom Statement-Objekt,
auf das der Cursor gerade zeigt
-
createStatementSort {} : legt im Statement-Objekt
eine Postionsnummer ab, die für die Umwandlung in XML erforderlich
ist
-
setStatementCounterSortNr {SortNr} : setzt den Cursor
auf das Objekt mit der Positionsnummer SortNr
-
setStatementCounterSortNrUsedXML {SortNr} : markiert
das Objekt mit der Positionsnummer SortNr zur Kennzeichnung, daß
es in XML umgewandelt ist
Funktionen der Klasse Namespace
-
init {namespaceShort namespaceURL} : Konstruktor
der Klasse Namespace mit den Übergabeparametern Namespaceabkürzung
und der Namespace-URL zum Anlegen eines Namespace-Objekts
-
getNamespaceShort {} : liefert die Namespaceabkürzung
des aktuellen Namespace-Objekts zurück
-
getNamespaceURL {} : liefert die Namespace-URL des
aktuellen Namespace-Objekts zurück
Funktionen der Klasse Namespaceorg
-
addNamespace {namespaceString} : ein neues Namespace-Objekt
wird aus der XML-Namespacedefinition namespaceString erzeugt
-
replaceNamespace {testString} : testString wird auf
eine Namespace-URL geprüft - wird eine gefunden, wird diese durch
die Namespaceabkürzung ersetzt
Funktionen der Klasse TripleFileRead
-
init args : Konstruktor, der eine Datei mit dem übergebenen
Dateinamen öffnet, parst und die entsprechenden Statement- und Namespace-Objekte
anlegt
Funktionen der Klasse XMLFileWrite
-
init args : Konstruktor, der eine Datei mit dem übgebenen
Dateinamen zum Schreiben öffnet
-
writeLine {writeString} : schreibt eine Zeile
mit dem Inhalt writeString in die geöffnete Datei
-
close {} : schließt die mit dem Konstruktor geöffnete Datei
Die Funktionen der Klasse CreateXMLBSS und CreateXMLBAS
werden hier nicht im einzelnen beschrieben, da die Funktionen nur innerhalb
der jeweiligen Klasse verwendet werden. Die beiden Klassen enthalten Funktionen
mit Namen, die den Namen in der EBNF Beschreibung der jeweiligen Syntax
der »Resource Description Framework (RDF) Model and Syntax Specification«
vom World Wide Web Consortium entsprechen. Mit Hilfe dieses Dokuments können
die Funktionen somit zugeordnet werden. 3. Implementierung
Die Implementierung erfolgt in XOTcl in der Version vom 1. Dezember 1998.
Die Klassen zur XML-Erstellung CreateXMLBSS und CreateXMLBAS werden
aufbauend auf den EBNF-Beschreibungen aus der »RDF Model and Syntax
Specification« erstellt. In den verwendeten Funktionen werden die
Aufrufe der anderen Funktionen entsprechend der EBNF-Beschreibung realisiert.
Diese Vorgehensweise hat den Vorteil, daß man eventuelle Änderungen
an der Spezifikation ohne große Probleme in die CreateXML - Klassen
implementieren kann.
In den Objekten der Klassen »Statement« und »Namespace«
werden Informationen gespeichert. Um mehrere Objekte dieser Klassen verarbeiten
zu können, sind die Klassen »Statementorg« und »Namespaceorg«
implementiert. Statement und Namespace Klassen sollten über die Funktionen
der entsprechenden Verwaltungsklassen angelegt werden und der Zugriff sollte
über die Verwaltungsklassen erfolgen.
Um die Umsetzung der in den Statement-Objekten gespeicherten Triple
in XML zu erleichtern, hat jedes Statement-Objekt die Variablen SortInfo
und XMLUsed. Die Variable SortInfo dient dazu, in den Statements die Reihenfolge,
in der die Triple in XML umzuwandeln sind, zu speichern. Die Variable XMLUsed
wird benötigt, um in XML umgewandelte Triple zu kennzeichnen.
Die Klasse TripleFileRead liest wie in der Aufgabenstellung gefordert
RDF-Triple aus einer Datei ein. Da diese Klasse als einzige Aufgabe das
Parsen der Eingabe und das Anlegen der Statements hat, kann sie durch andere
Klassen ersetzt werden, z. B. durch eine Klasse, die RDF-Triple aus dem
Internet verarbeitet.
XMLFileWrite ist die Klasse, die eine Ausgabedatei öffnet und Daten
hineinschreibt. Die Klasse ist zeilenorientiert angelegt. Wenn eine Zeile
XML-Code generiert ist, wird die Funktion »writeLine {writeString}«
aufgerufen. Bei dieser Klasse ist es möglich, durch geringe Modifikationen
die Daten auch als HTML-Seiten an einen Browser zu liefern.
4. Bedienung
Zur Ausführung des Programms sind die folgenden Eingaben erforderlich
bzw. möglich.
-
Das Programm benötigt eine Eingabedatei, in der die Triple eines RDF-Models
zeilenweise abgelegt sind. Es ist erforderlich, die Triple, wie in dem
Dokument »RDF Model and Syntax Specification«, anzugeben. Hiernach
besteht ein Triple aus einem Prädikat, einem Subjekt und einem Objekt.
In der Spezifikation wird festgelegt, daß ein Triple in geschweifte
Klammern eingeschlossen werden muß. Die drei Bestandteile des Triples
sind in den geschweiften Klammern durch Kommata getrennt anzugeben. Wenn
ein Subjekt oder Objekt ein Uniform Resource Identifiers (URI) ist, ist
diese Angabe in eckige Klammern zu setzen. Alle anderen Angaben sind mit
Anführungszeichen zu umschließen.
Eine Triple-Zeile der Eingabedatei kann beispielsweise folgende
Gestalt haben:
{"http://purl.org/dc/elements/1.0/Creator",[http://swt.wi-inf.uni-essen.de/~wbuening],"Wolfgang
Buening"}
-
Da beim Ablegen der Triple eines RDF-Models die Kurzbezeichnungen der Namespaces
verloren gehen, diese aber für die Erzeugung eines übersichtlichen
XML-Codes benötigt werden, kann man dem Programm die Namespaces mitteilen.
Hierfür werden den Zeilen mit den Triplen die XML-Namespace-Definitionen
vorangestellt. In der Eingabedatei sehen die Definitionen beispielsweise
folgendermaßen aus:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/"
Wenn die Eingaben erfolgt sind, wird das Programm über die
Kommandozeile mit dem Befehl »rdftoxml« gestartet. Diesem Befehl
müssen folgende Parameter übergeben werden:
-
Parameter: Datei, in der die Triple abgelegt sind
-
Parameter: Datei, in der der XML-Code gespeichert wird
-
Parameter (optional): BSS (standard) für die Ausgabe in der Basic
Serialization Syntax oder BAS für die Ausgabe in der Basic Abbreviated
Syntax
Wird der Befehl »rdftoxml«ohne Parameter aufgerufen, erscheint
eine Kurzbeschreibung zur Bedienung des Programms.
5. Beispiele
5. 1 Beispiele für die Erstellung von XML-Dateien
in der Basic Serialization SyntaxBeispiel A:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:DC="http://purl.org/dc/elements/1.0/"
{"http://purl.org/dc/elements/1.0/Creator",[http://swt.wi-inf.uni-essen.de/~wbuening],"Wolfgang
Buening"} |
XML-Datei nach der Basic Serialization Syntax:
<?xml version="1.0"?>
<RDF xmlns:DC="http://purl.org/dc/elements/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://swt.wi-inf.uni-essen.de/~wbuening">
<DC:Creator>Wolfgang Buening</DC:Creator>
</rdf:Description>
</RDF> |
Beispiel B:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/"
{"http://description.org/schema/Publisher",[http://www.wi-inf.uni-essen.de/~buening],"Wolfgang
Buening"}
{"http://description.org/schema/Title",[http://www.wi-inf.uni-essen.de/~buening],"Wollis
Homepage"}
{"http://description.org/schema/Date",[http://www.wi-inf.uni-essen.de/~buening],"1999-06-22T00:00"} |
XML-Datei nach der Basic Serialization Syntax:
<?xml version="1.0"?> <RDF xmlns:s="http://description.org/schema/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description about="http://www.wi-inf.uni-essen.de/~buening"> <s:Publisher>Wolfgang Buening</s:Publisher> <s:Title>Wollis Homepage</s:Title> <s:Date>1999-06-22T00:00</s:Date> </rdf:Description> </RDF>
|
Beispiel C:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/"
{"http://www.w3.org/1999/02/22-rdf-syntax-ns#type",[http://www.wi-inf.uni-essen.de/~buening],[http://description.org/schema/Person]} {"Name",[http://www.wi-inf.uni-essen.de/~buening],"Wolfgang Buening"}
{"Email",[http://www.wi-inf.uni-essen.de/~buening],"wolfgang.buening@uni-essen.de"}
{"Age",[http://www.wi-inf.uni-essen.de/~buening],"27"}
{"http://description.org/schema/Creator",[http://swt.wi-inf.uni-essen.de/~wbuening],[http://www.wi-inf.uni-essen.de/~buening]} |
XML-Datei nach der Basic Serialization Syntax:
<?xml version="1.0"?>
<RDF xmlns:s="http://description.org/schema/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://swt.wi-inf.uni-essen.de/~wbuening">
<s:Creator>
<rdf:Description about="http://www.wi-inf.uni-essen.de/~buening">
<rdf:type resource="http://description.org/schema/Person"/>
<Name>Wolfgang Buening</Name>
<Email>wolfgang.buening@uni-essen.de</Email>
<Age>27</Age>
</rdf:Description>
</s:Creator>
</rdf:Description>
</RDF> |
5.2 Beispiele für die Erstellung von XML-Dateien
in der Basic Abbreviated SyntaxBeispiel D:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/"
{"http://description.org/schema/Publisher",[http://www.wi-inf.uni-essen.de/~buening],"Wolfgang
Buening"}
{"http://description.org/schema/Title",[http://www.wi-inf.uni-essen.de/~buening],"Wollis
Homepage"}
{"http://description.org/schema/Date",[http://www.wi-inf.uni-essen.de/~buening],"1999-06-22T00:00"} |
XML-Datei nach der Basic Abbreviated Syntax:
<?xml version="1.0"?>
<RDF xmlns:s="http://description.org/schema/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://www.wi-inf.uni-essen.de/~buening"
s:Publisher="Wolfgang Buening" s:Title="Wollis Homepage" s:Date="1999-06-22T00:00"
/>
</RDF> |
Beispiel E:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/"
{"Name",[http://www.wi-inf.uni-essen.de/~buening],"Wolfgang Buening"}
{"Email",[http://www.wi-inf.uni-essen.de/~buening],"wolfgang.buening@uni-essen.de"}
{"Age",[http://www.wi-inf.uni-essen.de/~buening],"27"}
{"http://description.org/schema/Creator",[http://swt.wi-inf.uni-essen.de/~wbuening],[http://www.wi-inf.uni-essen.de/~buening]} |
XML-Datei nach der Basic Abbreviated Syntax:
<?xml version="1.0"?>
<RDF xmlns:s="http://description.org/schema/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://swt.wi-inf.uni-essen.de/~wbuening">
<s:Creator resource="http://www.wi-inf.uni-essen.de/~buening" Name="Wolfgang
Buening" Email="wolfgang.buening@uni-essen.de" Age="27" />
</rdf:Description>
</RDF> |
Beispiel F:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:s="http://description.org/schema/"
{"http://www.w3.org/1999/02/22-rdf-syntax-ns#type",[http://www.wi-inf.uni-essen.de/~buening],[http://description.org/schema/Person]} {"Name",[http://www.wi-inf.uni-essen.de/~buening],"Wolfgang Buening"}
{"Email",[http://www.wi-inf.uni-essen.de/~buening],"wolfgang.buening@uni-essen.de"}
{"Age",[http://www.wi-inf.uni-essen.de/~buening],"27"}
{"http://description.org/schema/Creator",[http://swt.wi-inf.uni-essen.de/~wbuening],[http://www.wi-inf.uni-essen.de/~buening]} |
XML-Datei nach der Basic Abbreviated Syntax:
<?xml version="1.0"?>
<RDF xmlns:s="http://description.org/schema/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://swt.wi-inf.uni-essen.de/~wbuening">
<s:Creator>
<s:Person about="http://www.wi-inf.uni-essen.de/~buening">
<Name>Wolfgang Buening</Name>
<Email>wolfgang.buening@uni-essen.de</Email>
<Age>27</Age>
</s:Person>
</s:Creator>
</rdf:Description>
</RDF> |
5.3 Sonstige BeispieleBeispiel G:
Triple-Datei:
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/metadata/dublin_core#"
{"http://purl.org/metadata/dublin_core#Title",[http://www.dlib.org/],"D-Lib
Program - Research in Digital Libraries"}
{"http://purl.org/metadata/dublin_core#Description",[http://www.dlib.org/],"The
D-Lib program supports the community of people with research interests
in digital libraries and electronic publishing."}
{"http://purl.org/metadata/dublin_core#Publisher",[http://www.dlib.org/],"Corporation
For National Research Initiatives"}
{"http://purl.org/metadata/dublin_core#Date",[http://www.dlib.org/],"1995-01-07"}
{"http://www.w3.org/1999/02/22-rdf-syntax-ns#type","genid2",[http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag]}
{"http://www.w3.org/1999/02/22-rdf-syntax-ns#_1","genid2","Research;
statistical methods"}
{"http://www.w3.org/1999/02/22-rdf-syntax-ns#_2","genid2","Education,
research, related topics"}
{"http://www.w3.org/1999/02/22-rdf-syntax-ns#_3","genid2","Library
use Studies"}
{"http://purl.org/metadata/dublin_core#Subject",[http://www.dlib.org/],"genid2"}
{"http://purl.org/metadata/dublin_core#Type",[http://www.dlib.org/],"World
Wide Web Home Page"}
{"http://purl.org/metadata/dublin_core#Format",[http://www.dlib.org/],"text/html"}
{"http://purl.org/metadata/dublin_core#Language",[http://www.dlib.org/],"en"} |
XML-Datei nach der Basic Serialization Syntax:
<?xml version="1.0"?>
<RDF xmlns:dc="http://purl.org/metadata/dublin_core#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://www.dlib.org/">
<dc:Title>D-Lib Program - Research in Digital Libraries</dc:Title>
<dc:Type>World Wide Web Home Page</dc:Type>
<dc:Format>text/html</dc:Format>
<dc:Language>en</dc:Language>
<dc:Description>The D-Lib program supports the community of people
with research interests in digital libraries and electronic publishing.</dc:Description>
<dc:Publisher>Corporation For National Research Initiatives</dc:Publisher>
<dc:Date>1995-01-07</dc:Date>
<dc:Subject>
<rdf:Description ID="genid2">
<rdf:type resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"/>
<rdf:_1>Research; statistical methods</rdf:_1>
<rdf:_2>Education, research, related topics</rdf:_2>
<rdf:_3>Library use Studies</rdf:_3>
</rdf:Description>
</dc:Subject>
</rdf:Description>
</RDF> |
XML-Datei nach der Basic Abbreviated Syntax:
<?xml version="1.0"?>
<RDF xmlns:dc="http://purl.org/metadata/dublin_core#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description about="http://www.dlib.org/" dc:Title="D-Lib Program
- Research in Digital Libraries" dc:Type="World Wide Web Home Page" dc:Format="text/html"
dc:Language="en" dc:Description="The D-Lib program supports the community
of people with research interests in digital libraries and electronic publishing."
dc:Publisher="Corporation For National Research Initiatives" dc:Date="1995-01-07"
dc:Subject="genid2" />
<rdf:Description ID="genid2">
<rdf:type>http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag</rdf:type>
<rdf:_1>Research; statistical methods</rdf:_1>
<rdf:_2>Education, research, related topics</rdf:_2>
<rdf:_3>Library use Studies</rdf:_3>
</rdf:Description>
</RDF> |
|
|
|
|