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:

    Zusätzlich zu den sich aus der Anforderungsanalyse ergebenden Klassen werden folgende Klassen für die Behandlung von Namespaces benötigt: Zwischen den Klassen bestehen folgende Beziehungen:
     
    Im einzelnen gibt es folgende Nutzungsbeziehungen zwischen den Klassen:


    2.2 Funktionen

    Im folgenden werden die zentralen Funktionen der einzelnen Klassen genauer beschrieben.

    Funktionen der Klasse Statement

    Funktionen der Klasse Statementorg Funktionen der Klasse Namespace


    Funktionen der Klasse Namespaceorg

    Funktionen der Klasse TripleFileRead
     
    Funktionen der Klasse XMLFileWrite
     
    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.


    Wenn die Eingaben erfolgt sind, wird das Programm über die Kommandozeile mit dem Befehl »rdftoxml« gestartet. Diesem Befehl müssen folgende Parameter übergeben werden:

    1. Parameter: Datei, in der die Triple abgelegt sind
    2. Parameter: Datei, in der der XML-Code gespeichert wird
    3. 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 Syntax

    Beispiel 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 Syntax

    Beispiel 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 Beispiele

    Beispiel 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>
     


    (C)1996-2024 Wolfgang Büning - Ausgedruckt von www.wolfgangbuening.de