RDFHandle
Project
Within my second diploma thesis in the business informatics II course of studies I implemented a class system. This class system allows to store data of RDF models using an appropriate format and to build a basis for further data processing. At the end of this page one can find documentation to get a deeper understanding of this topic.
The class system has been implemented using the programming language Extended Object Oriented Tool Command Language ( XOTcl ) and it makes use of design patterns.
To read RDF dokuments in the XML/RDF syntax the class system uses the RDF parser xoRDF (Version 0.9beta) that has been implemented at the chair business informatics and software technique at the university Universität GH Essen . Further information about this topic is available on the homepage of Uwe Zdun .
The code of the class system is available on the central download page . Furthermore there is some documentation available on the documentation page .
One of the main features is the implementation of a SQL style query language. It allows to query the triples of an RDF model using a query. The result of this kind of query is a subset of the triples. The syntax of a query looks like those shown in the examples below:
| SELECT | subject,predicate,object,parsetype | FROM | |
| WHERE | subject | predicate | object | parsetype = "" | ||
| AND | OR | subject | predicate | object | parsetype = "" | ||
| ORDER BY | subject | predicate | object | parsetype | ||
In doing so the triples are available as a list consisting of {predicate,[subject],[object]} or {predicate,[subject],"object"}.
Dabei liegen die Triple in Form einer Liste von {predicate,[subject],[object]} oder {predicate,[subject],"object"} vor.
Documentation
The material for the Resource Description Framework (RDF) class system RDFHandle that is referenced below are compressed using the applications Tar and Gzip . Some of the documents are postscript files and can be viewed using the Ghostview application.
Source code
The source code of the class system is commented in the English language which means that there is no source code documentation (in the German language) available so far. To visualize the relation between the classes a class diagram (from 16.01.2000) is available for download and can also be viewed online .
Query language
There exists a grammar for the SQL style query language (similar to the Extended Backus Naur Form, EBNF) of the class system that allows to query the triples of a RDF model.
Components
Furthermore there exists a components diagram (16.01.2000) showing the relations between the different files of the class system. This diagram can also be viewed online . Below the interfaces of some classes that are important when using the class system are summarized. An overview over which files contain which classes can be found in the components diagram . The interfaces are aggregated in one class as soon as the RDF API has been passed. Further information is available on http://www-db.stanford.edu/~melnik/rdf/api.html .
Class RDFModel
| Return value |
Function |
Parameter |
|---|---|---|
| STRING (Instance name) | init | {} |
| {} | reset | {} |
| BOOLEAN | statementExists | { STRING STRING STRING STRING } |
| BOOLEAN | createStatement | { STRING STRING STRING STRING } |
| BOOLEAN | removeStatement | { STRING STRING STRING STRING } |
| BOOLEAN | replaceStatement | { LIST LIST } |
| LIST | getTriple | {} |
| BOOLEAN | namespaceExists | { STRING STRING } |
| BOOLEAN | createNamespace | { STRING STRING } |
| BOOLEAN | removeNamesapce | { STRING STRING } |
| BOOLEAN | replaceNamespace | { LIST LIST } |
| LIST | getNamespaces | {} |
| STRING (Inhalt) | getNamespacePrefix | { STRING } |
| STRING (Inhalt) | getNamespaceUri | { STRING } |
| BOOLEAN | setSpecialNamespace | { STRING STRING STRING } |
| LIST | getSpecialNamespace | { STRING } |
| STRING (Präfix) | getAnonymResourcePrefix | {} |
| BOOLEAN | setAnonymResourcePrefix | { STRING } |
| STRING (ID) | createAnonymResourceID | {} |
Class RDFXMLModel
(inherits from class RDFModel)
| Return value |
Function |
Parameter |
|---|---|---|
| STRING (Instance name) | init | {} |
| {} | reset | {} |
| STRING | createContainer | { STRING STRING LIST } |
| STRING | createReification | { STRING STRING STRING STRING STRING } |
| BOOLEAN | createAboutEach | { STRING LIST } |
| BOOLEAN | createAboutEachPrefix | { STRING LIST } |
| BOOLEAN | createRepeatedProperty | { STRING STRING LIST } |
| LIST | getContainer | { STRING } |
| LIST | getContainerMembers | { STRING } |
| LIST | getReifications | {} |
| LIST | getReificationMembers | { STRING } |
| LIST | getAboutEaches | {} |
| LIST | getAboutEachPrefixes | {} |
| LIST | getRepeatedProperties | { STRING } |
| BOOLEAN | reificationIsFact | { STRING } |
| {} | setXMLVersion | { STRING } |
| STRING | getXMLVersion | {} |
Class AbstractQuery
(TripleQuery and NamespaceQuery)
| Return value |
Function |
Parameter |
|---|---|---|
| STRING (Instance name) | init | { -selection STRING -table STRING -where STRING -oderby STRING } |
| STRING | startQuery | {} |
| BOOLEAN | setTable | { STRING } |
| BOOLEAN | isValidTable | {} |
Class AbstractRDFViewer
(RDFTripleViewer and RDFXMLViewer)
| Return value |
Function |
Parameter |
|---|---|---|
| STRING (Instance name) | init | { -withDescriptionBags BOOLEAN } |
| STRING | viewModel | { STRING } |
Class RDFio
| Return value |
Function |
Parameter |
|---|---|---|
| STRING (Instance name) | init | { -model STRING } |
| STRING | writeToDisk | { STRING STRING STRING } |
| STRING | readFromDisk | { STRING STRING STRING } |
Literature
An overview over the Resource Description Framework and further links to this topic are available at the W3C . The RDF is defined in the RDF Model and Syntax Specification and in the RDF Schema Specification of the W3C. To get a better understanding of the assembly of XML/RDF documents one can read the Extensible Markup Language specification of the W3C.
There is also some documentation that is important for the implementation. There exists a web page with documentation about the Extended Object Oriented Tool Command Language (XOTcl) one should have read. Furthermore the are two papers available for download dealing with the use of design patterns together with XOTcl. The first describes the so called per object mixins while the second describes filters that are used to achieve the same.
There is a paper about Wafe/Mofe, that contains an introduction and an overview over the available commands