FOAFViewer – Current Version v0.10

The v0.10 of the Android FOAFViewer exists now for approximately 6 months, but I have never presented here. The only blog entry about the FOAFViewer is the very first, very trivial and ugly prototype. So lets start with a short feature overiew:

  • Cleaner Interface.
  • Recursive Iteration over the friend relationships.
  • Caching mechanism (not the images) for offline view of your FOAF profile and that of your friends.
  • Location visualization with one click.
  • Share your FOAF link over all supported channels that are able to share text (e.g. bluetooth, short message, email, …)
  • Link to further information for the interests
  • Make a phone call directly from the application (starts the dialer app)
  • Fixed bug with Froyo 2.2
  • Not supported yet (very buggy) is the ability to add a FOAF profile to your contacts.

FOAFViewer Mainscreen

FOAFViewer Profile

Project Website: with more screenshots, installation package, more information…
Sourcecode: repos



Posted in Development, Mobile Devices, Semantic Web Tagged , , ,

Future House: Splitting the project into subparts

Through the complexity of the “Future House” framework the project was split into three sub projects:

  • PCA (Personal Cyber Agent): The central control unit that is responsible for the smartness and information gathering/evaluation.
  • Identity ProviderA central identification framework that should manage the authorization/authentication of all agent that are related to a environment (such as the house).
  • Mobile Drone: On the base of a mikrokopter we are planning to build a semi-automatic drone that could be used for different tasks (e.g. communication, surveillance, …). This drone should be controlled by the PCA.

At the moment the Identity Provider, shortly IdP, is developed on the base of the SAML2 specification. The purpose of this component is to track user in the domestic environment to enrich the context information with real time information about the agents and there behaviour. The gained information are only saved in the local repository without connection to the outside world. Additional to assure no information leak the connection are secured with TLS and X.509 certification (the same implementation as used for the personal cyber agent).



Posted in Future House, Research Tagged , , , ,

Future House Project – Component: Personal Cyber Agent

During the last few days our team has worked on the idea of smart home technology (intelligence seams to be a too strong term at the moment). Our approach covers the higher level control of low level systems, such as light intensity, temperature, device data and other user context information gained from the house scenario. Concrete that means we work on a central control unit that is able to collect all relevant data, evaluate and classify them and reason about it. The concrete scenarios are not quiet clear at the moment, but there is a intensive ongoing discussion about it what we are able to do with the current technology. The used technology is the LOD model (Linked Open Data) in combination with the own, house intern, semantic data sets. If needed (not sure at the moment) RDF/OWL is extended with other, more powerful, ontologies.

The current sub project of the “Future House” project is called “Personal Cyber Agent”, shortly pca. The main goal of this component is to collect the data and to perform reasoning steps to automatically react on user preferences. The current focus is to build a stable base software system that is able to collect and return the information in a suitable and secure manner. For this purpose the underlying communication layer uses the SOAP protocol specification in combination with RDF/OWL data and WS-Security (WSSE). Through high security needs the authentication, authorization and encryption, signature is build on the base of X.509 certificates.

The achieved goals sounds at the moment very naive in relation with the major goal, but the current work is used as base system for all future development. With the help of the modular architecture it should be very flexible for extension. That makes the reasoning part independent from the underlying technology, such as KNX (EN 50090, ISO/IEC 14543).

PCA – Source Code



Posted in Artificial Intelligence, Future House, Research Tagged , , , ,

Secure, Hidden and Intelligent Communication in the area of Semantic Web.

During my work in the last few days I have begun to write a security framework that hides the complexity of WS-Security on the base of SOAP. The work has inspired me to think about possible use cases that are go behind the securing of simple web services. One such approach that comes in mind is the creation of an intelligent and secure instant messaging on the base of WS-Security, SOAP and Linked Open Data. The approach is nothing new (see SILC protocol), but the underlying technology allows to optimize such a newly created protocol with intelligent reasoning features such as:

  • Conversation Analysis: With the help of semantic annotation the conversation between two or more person could be analyzed. For example: What is the thematic of the talk? Who talks with whom?. On the base of this information helper modules could provide useful services, such as a link to the problem solution if the conversation tries to solve some problems or more detailed information about the other person (link to FOAF files!?!).
  • Pretending Conversation: The unencrypted part could be pretend a talk and the SOAP message could piggyback the real, sensitive conversation in encrypted form. The pretending of a talk is possible through the conversation analysis of previous talks. So a useful conversation could simulated.

These two categories are only two of a lot of new possibilities that could be gained by a semantic annotated and secured chat protocol. The idea may triggers problems through the practical implementations but is worth looking into. The nice thing about such a protocol is the possibility to use well-known technology to improve the user experience.

For the SOAP Security Framework look at our git repository, also available in our maven repository. At the moment it’s only a wrapper around the WSS4J library that makes the handling of security features easier, but in the near future the library will be maybe expanded with useful gimmicks.



Posted in Research, Semantic Web Tagged , , , , ,

RFID Two Way Access Control System

On the base of the SmartCard Handler library I have development a simple access control system. The major idea behind the library is that additional to the UID (that should be unique for each card) a SHA-512 hash value of a random generated passphrase is stored on the card. For the developing I use Mifare 1K card and as reader my HID Omnikey 5321v2.

The additional security effect is gained through the idea that not the card nor the server (computer with attached reader) has all information available in clear text.

The following information are stored on the entities:

  • Server: sha512(cardUID) and passphrase
  • Card: cardUID and sha512(passphrase)

The implemented library that uses the presented approach offers a method for the passphrase change. During the call a random generated token (random are not only the characters, but also the length) is written into the servers database and the SHA-512 hash value to the card. That makes it possible to change on every access (or from time to time) the passphrase.

The approach adds a additional layer of security to RFID authentication mechanism that is only base on the UID of the cards. Although I can not give a guarantee that the approach is under all circumstances secure. For example the random generate is only pseudo random and the database should be protected against intruder. Another point is that the whole system has to be implemented in a secure way. If the initiating of new card is public available for the user the whole mechanism breaks.

If you found a major security flaw on the approach (or on the implementation) please let me know. In the meantime the library is only a simple way yo protect non critical areas and a example how to use the SmartCard Handler.

Published as package in the SmartCard Library.



Posted in Development Tagged , , , , ,

SmartCard Handler – Java Library

SmartCard Handler, shortly named SCHandler, is a library that abstracts the handling of smart cards. The underlying code base uses the newly created package java.smartcardio.* (since SUN Java 1.6). Currently there are no dependencies of third part libraries. That makes the code very portable.

Precondition

On the Hardware site:

  • Smartcard Reader: I use a Omnikey 5321 USB that supports RFID (13.56 Mhz) and contact smart cards.
  • Contactless or contact smart card: I use Mifare 1K cards for RFID and the FSFE card (is a OpenPGP card) for contact smart card.

On the software site:

  • Java 1.6: During my tests the free implementation IcedTea6 had no support for the javax.smartcardio.* package.

Currently there is a very basic implementation for the Mifare1K and the FSFE card. The abstraction was implementation on the base of the specification, that is available for the two card types.

Source Code (GitWeb)



Posted in Development Tagged , , , , ,

Semantic Crawler Library

During my work over the last months I have written at least three times code that parses FOAF files. Always slightly different with different frameworks (Jena, Jaxen) on different platforms. Now I have decided to consolidate at least the parsing in a central library.

The library with the name Semantic Crawler or shortly scrawler should not only parse FOAF file but also the other main ontologies. It’s more a parser than a crawler.

Advantage

  • Able to skip the parsing step and use directly the class representation. Only needed the URL/IRI of the RDF file.
  • Easier use of Semantic Web Technology for Software Engineers and Programmer.
  • Easy to extend the parsing step.
  • OpenSource (as all stuff on this website)
  • More time for the essential parts of Semantic Web programs. For example: Reasoning

Interface Example

For the interface I have introduced Java Annotations to be able to generate from the object a RDF file. For this purpose there is not enough to store the raw data, but also the meta data how the sub tree has looked liked before the parsing.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@RDFEntity(ontoURI = Ontologies.foafURI, concept="Person")
public interface IFOAFPerson {
@RDFProperty(ontoURI=Ontologies.foafURI, value="name")
public abstract String getName();
/*
* Here are more method definitions...
*/
@RDFProperty(
ontoURI=Ontologies.geoURI,
value="Point",
type = Type.ROOTNODE,
subNode= { "lat", "long" },
subNodeOntoURI = { Ontologies.geoURI, Ontologies.geoURI },
subNodeDeep = { 1, 1 },
subNodeType = { Type.LITERAL, Type.LITERAL } )
public abstract Vector<double> getLocation();
}

A RDF file that represent the Java interface should look like the following example (only a excerpt with the data shown also in the interface):

1
2
3
4
5
6
7
<foaf:Agent>
        <foaf:name>Alex Oberhauser</foaf:name>
        <geo:Point>
                <geo:lat>10.1174855232239</geo:lat>
                <geo:long>99.8058342933655</geo:long>
        </geo:Point>
</foaf:Agent>

The automatic transformation from Java Object to RDF with the help of the annotation is not written yet.

The Java Annotations describes at the moment only the classes and the properties. The implemented interface is only the first approach to handle efficiently the transformation from Java to RDF and back. The name value and the lat/long values are returned from the methods.

  • subNodeDeep:

Indicates how far the node is away from the root node (described by value). 1 (one) means that the subNode is a child, 2 (two) means that is the child of a child.

  • subNodeType/type:

The type that could be stored in this node. Possible values: RESOURCE, ROOTNODE, LITERAL, RESOURCE_LITERAL, UNDEFINED

  • ontoURI:

The URI to the ontology. Stored in the Ontolgies class.

Example for Programmers/Software Engineers

GIT WebAccess

The library is a maven project. The two important maven commands for the project are listed below:

  • mvn package

Creates the library as jar, the sources as jar and the JavaDoc as jar.

  • mvn site

Creates a website with useful information.

If you want to learn what ontologies are supported and what values you can gain from such a RDF file you should read the JavaDoc and/or look into the interface package to.networld.scrawler.interfaces. Is possible that not all interfaces have an implementation, but I am working on it.

Now to the interesting part. The following code reads out my Name from my FOAF file and prints it to the STDOUT. The following code is only an excerpt of the important part.

1
2
3
IFOAFPerson myFOAF = new Person("http://devnull.networld.to/foaf.rdf");
String myName = myFOAF.getName();
System.out.println("My name is " + myName);

Looks easy? That was the intention to write a simple library that could be used in more complex and more interesting application.

Please feel free to contact me if you have question or improvements. I will try to answer or to fix it. And of course let me know in what application you use my library. And keep in mind that at the moment the best working parts is the parsing of FOAF files but I will for sure extend the library with other useful ontologies.



Posted in Semantic Web Tagged , , , , , , , ,

Semantic Dive Logbook – DiveDroid

Last week I have started a dive logbook for android phones on the base of my Scuba Dive Ontology. On the base of RDF files that looks similar than the following excerpt, the logbook shows the dives in a suitable form and interlinked with appropriate information and actions.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<dive:Dive rdf:ID="dive-4">
<dive:id>4</dive:id>
<dive:diver rdf:resource="/sdcard/divedroid/buddies/yourname.rdf#profile" />
<dive:name>Open Water Dive 4</dive:name>
<dive:date>2007-07-25</dive:date>
<dive:activity>Open Water Course</dive:activity>
<dive:divesite>White Rock</dive:divesite>
<dive:country rdf:resource="http://www4.wiwiss.fu-berlin.de/factbook/data/Thailand" />
<dive:location>Koh Nangjuan</dive:location>
<dive:divebase>Easy Divers (Koh-Nangjuan)</dive:divebase>
<geo:Point rdf:parseType="Resource">
<geo:lat>10.1174855232239</geo:lat>
<geo:long>99.8058342933655</geo:long>
</geo:Point>
<dive:partner rdf:resource="#buddy_name" />
<dive:partner rdf:resource="#diveinstructor_name" />
<dive:entrancetype>Boat</dive:entrancetype>
<dive:watertype>Salt</dive:watertype>
<dive:weight>8</dive:weight>
<dive:exposureprotection>Shorty</dive:exposureprotection>
<dive:maxdeep>14.6</dive:maxdeep>
<dive:bottomtime>38</dive:bottomtime>
<dive:comment>This dive was stored on video. And here comes more of the comment</dive:comment>
<geo:image rdf:resource="/sdcard/divedroid/sat_pic/koh_nangyuan.jpg" />
</dive:Dive>

The URIs to the pictures are not really nice and bound to the device (path is written statically to the file). This is a compromise that I have made to assure that your dive informations are offline available and you don’t have to download it to a public space.

The following screenshots are taken from the first version and should give you a good overview how the application looks like.

Dive Collection List

Shows the dive collection that you have stored.

Dive Profile

A single dive profile



Posted in Mobile Devices, Semantic Web Tagged , , , , ,

Why “Facebook”, “MySpace”, “Twitter” & Co. are a deprecated approaches…

Today nearly everybody has an account on one of the big social networks. Although this is a nice way to keep in touch with friends and co-workers the approach to store your whole private or semi-private data in a central way at a data provider that you can’t be sure what they will do with your data is not the best idea.

Now you would ask if there are alternative? Is the next generation internet mature enough? There is no clear answer to this question. If you are keen on publishing your data similar to a social network site you could use FOAF (Friend of a Friend). There is a raw file (my FOAF file) that you could visualize with viewer that you prefer (for example my written FOAF Viewer for Android or a web viewer).

But the major advantage of social networks is the communication between the parties. That is with an simple FOAF file not possible and is also not solved satisfactorily until now. For the future the EU funded project m:Ciudad looks promising.

On the m:Ciudad website the project goals are defined as follows:

Imagine what kind of applications become possible when our mobile devices do not only present data but provide valuable information to other users. Suppose that you are able to create instant services with information, contents and knowledge with your mobile device and in your mobile device. And suppose that this knowledge can be used remotely by other users in a simple way, with their mobile devices. And now, imagine the amount of available knowledge of those services. Millions or perhaps billions of potential sources with valuable information: constantly updated, relevant to our instant interests and still context aware.

Imagine you take your FOAF file evaluate your contacts visualize them in your graphical user interface on your mobile device. On click you could communicate in different way with your friends without bothering any more if they are on platform X or use the communication protocol Y. For this purpose the FOAF ontology has to be extended and the communication ways have to be abstracted, but this are things that are not impossible.

Looking forward to working on a better internet.



Posted in Mobile Devices, Research, Semantic Web Tagged , , , , , ,

FOAF Viewer on Android – First impression

Yesterday I have published a first version of my FOAF Viewer that runs on android (mobile operating system). Although the program is at the moment very limited and only a first impression it should give you a good overview on what I am going to work in the next few months.

The major idea behind the project is to bring semantic technology to mobile devices and to make my FOAF file and my linked friends visible in a human readable style.

The following picture are from the ALPHA version of the program. At the moment it’s more a proof-of-concept and will be optimized stepwise.

FOAF Viewer - Main Screen


FOAF Viewer - Map View


FOAF Viewer - Profile View



Posted in Mobile Devices, Semantic Web Tagged , ,