Thursday, July 31, 2008

A Quick Semantic Vision

I want a workable, useful agent.

I should be able to do (assuming the presence of apache, php, mysql):

pear install ARC2
pear run-scripts ARC2
# Configure my ARC2 triplestore database details
# Configure apache

Then just visit http://triplestore/

From here I should be able to Install a lightweight Agent or two. For instance, the agent.

Each Agent is basically a small MVC bit of PHP; with a ScutterController, InferenceController and QueryController.

In our agent, the ScutterController deals with fetching new data on demand, looking at what existing data is known and seeing what rdfs:seeAlso links are defined or otherwise checking for new content.
This is triggered at regular intervals or when explicitly asked for by the end user.

The InferenceController does very simple reasoning. For instance, it looks for people with the same mbox_sha1sums and writes out new RDF to assert they are the owl:sameAs. Our agent probably doesn't need this so much, it could rely on a more general Foaf inference Agent.
Alternatively, a geocoding agent could take all geo:SpatialThings and actually geocode them, or lookup labels for geocoded blank nodes.

The QueryController helps our agent publish available commands and views.

Since provides both FOAF and RSS 1.0, sensible commands could include things like fetch_new_posts(), fetch_new_posts_by_my_friends() and render out those views meaningfully.

Ideally, installing a new agent is little harder than a simple pear install Agent_FOAF

So, what am I missing that stops me from doing this?

Progress so far:
I've made use of Zend Framework to make a proof of concept web UI - implemented a quick and dirty web interface to ARC2 to query and load data, as well as to do all of the nice installation magic.
In addition to that I've got half of the module/plugin stuff knocked off. Right now I'm tinkering with a basic addressbook module; next will be a foafinference module; then probably a friendactivity (meshup blogposts by friends you foaf:know directly) module.

Visual polish, implement a way to detect /modules/agents/ and tie them into the running application, security, publish a sparql endpoint (easily), a pear package for it all and a post install script, documentation.

No comments: