The content of this page is subject to change, due to major changes in the prototype.
The new version (July 2009) of the prototype (including the scenario sources) can be downloaded here.
To run the new version of the prototype you can still follow the installation instruction below. However, the new version uses sesame as RDF-store.
Sticky Logging Prototype
A first prototype can be downloaded here:
Sticky Logging Library Source - This file contains the source of a first prototype implementation of the sticky logging mechanism. The sticky logging library is designed to be used together with JBoss 4.2. To download JBoss 4.2 and for installation instruction, please visit jboss.org. The sticky logging library requires Jena and libraries Jena depends on to be installed. To download Jena and for further instructions how to install Jena, please visit jena.sourceforge.net.
Scenario Source - This file contains the source files of two Web services and a client application. The client calls an operation of the first Web service, which calls an operation of the second Web service. At both calls the name of the customer is transferred to the called Web service and the transfer is logged. The Web services need to be deployed on a JBoss 4.2 application server. The sticky logging makes use of so called Message Handlers of JBoss. This needs to be configured in the standard-jaxws-endpoint-config.xml (click to download an example file). Because of JBoss, the Web services require JDK 1.5. The rest of the prototype may be compiled with JDK 1.6. (Some of the files of the prototype have been created automatically be means of wsimport).
If you have questions, remarks, suggestions or problems, do not hesitate to contact me: Dr. Christoph Ringelstein
If you are using Eclipse, put the standard-jaxws-endpoint-config.xml file in the WebContent/META-INF folder of the Web Services. Configure the JBoss Server as follows:
Run dialog->Generic Server
1) Add the JBoss Server
- Program arguments: -c default
- VM arguments: -Dprogram.name=run.bat -Djava.endorsed.dirs="PATHTOJBOSS/bin/../lib/endorsed" -Xms128m -Xmx512m
- use run.sh instead run.bat, if you are running linux, etc
- Working directory: "PATHTOJABOSS/bin"
- Bootstrap Entries add external jar "PAHTTOJBOSS/client/jaxb-api.jar"
- User Entries add external jar "PAHTTOJBOSS/run.jar" and add projexts "SLogging" and "SLog"
To run the prototype with your JBoss server, you may need to add the following .jar files to "PAHTTOJBOSS/lib/endorsed":
An example eclipse project of the prototype is work in progress and will be published soon.
Sticky Logging Ontology
The Sticky Logging Ontology is an ontology defining basic concepts for semantic logging in distributed workflows. In the following we introduce the classes defined in the Sticky Logging Ontology:
The class DataInstance represents an instance of a piece of data that is processed by a distributed workflow. The class has the following properties:
|hasUUID||A UUID  that clearly identifies the data instance.|
|isPrimary||A xsd:boolean that indicates if the data instance is the primary instance of a piece of data. If not the data instance is a copy of another instance.|
|isCopyOf||An URI referring to the data instance this data instance is a copy of.|
|hasCopy||An URI referring to all data instances that are copies of this data instance.|
The following example depicts the specification of a data instance:
:dataInstance1 rdf:type sl:DataInstance :dataInstance1 sl:hasUUID "a26f4580-39d9-11dc-a3fa-..." :dataInstance1 sl:isPrimary "true"
The Action class describes actions performed on data instances. The class has the following properties:
|isOfKind||An URI referring to the kind (see below) of the action.|
|hasPurpose||An URI referring to an ontology concept defining the purpose (see below) of the action.|
|performedOnDataInstance||An URI referring to the data instance the action is performed on.|
|hasSequentialNumber||An xsd:integer value specifying the sequential number of this action. The number is increased by 1 with each action performed. The first action has the sequential number 1.|
|hasTimeStamp||A xsd:dateTime value specifying the point of time when the action is performed. The time must be given in UTC.|
The following example depicts the logging of a performed action:
:action1 rdf:type sl:action :action1 sl:performedOnDataInstance :dataInstance1 :action1 sl:hasSequentialNumber "1" :action1 sl:isOfKind sl:CopyAction :action1 sl:hasPurpose dofd:DeliverOrder
Log entries are represented by means of the class LogEntry that has the following properties:
|hasUUID||An UUID  that clearly identifies the log entry.|
|logsAction||An URI referring to the action logged by means of the log entry.|
|hasSequentialNumber||An xsd:integer value specifying the sequential number of this log entry. The number is increased by 1 with each recorded log entry. The first log entry has the sequential number 1.|
|hasTimeStamp||A xsd:dateTime value specifying the point of time when the log entry is created. The time must be given in UTC.|
The following listing depicts the log entry recording the above-performed action:
:logEntry1 rdf:type sl:LogEntry :logEntry1 sl:hasUUID "cf2f30c0-39c1-11dc-80ae-..." :logEntry1 sl:logsAction :action1 :logEntry1 sl:hasSequentialNumber "1"
The Entity class represents an entity recording log entries. The entity can be an organisation or a natural person.
|hasName||A xsd:string value containing the legal name of the entity.|
|hasAddress||A foaf:address value specifying the legal address of the entity.|
|hasLogged||An URI referring to the log entries recorded by the entity.|
|hasPGPCertificate||An URI referring to the PGP certificate of the entity.|
|Signature||A xsd:string value containing the signature of the entity. The signature has to sign everything logged by the entity. This also includes the RDF triples used for the identification of the entity (only the triple containing the signature is not signed). To sign the triples the approach of Carroll presented in  is used.|
|hasTimeStamp||A xsd:dateTime value specifying the point of time when the entity entry is created. The time must be given in UTC.|
The following example depicts the identification of an entity:
:entity1 rdf:type sl:Entity :entity1 sl:hasName "UniversitÃ¤t Koblenz-Landau" :entity1 sl:isLogging :logEntry1 :entity1 sl:hasPGPCertificate "http://isweb.uni-koblenz.de/examplecert.asc" :entity1 sl:Signature "HrdSDFc..."
Kinds of Actions
The sticky logging ontology distinguishes between various kinds of actions that are performed on data instances. In the following an overview is given:
|Kind of Action||Description|
|UseAction||The class UseAction represents the read action performed on a data instance to process the data.|
|CopyAction||The class CopyAction represents the read action performed on a data instance to create a copy of the data instance.|
|CreateAction||The class CreateAction represents the write action performed to create a new data instance.|
|ChangeAction||The class ChangeAction represents the write action performed to change the data contained in an instance.|
|DeleteAction||The class DeleteAction represents the write action performed to delete an existing data instance.|
Purposes of Actions
To specify purposes of actions performed on data instances, concepts defined in domain ontologies are used. The domain ontologies extend the upper ontology of action purposes. The definition of the upper ontology is ongoing work. As soon as the ontology is defined it will be published here.
 Carroll, J. J.: Signing RDF Graphs. In: D. Fensel et al. (Eds.): The SemanticWeb - ISWC 2003, LNCS 2870, pp. 369-384, Springer, Berlin, Heildelberg (2003)
Ringelstein, Christoph (2007): Protokollierung in service-orientierten Architekturen. In: Datenschutz und Datensicherheit. Bd. 31. Nr. 10.
Ringelstein, Christoph; Staab, Steffen (2007): Logging in Distributed Workflows. In: Proceedings of the Workshop on Privacy Enforcement and Accountability with Semantics. Busan, South-Korea: