<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Zeitgeist API Ramblings</title>
	<atom:link href="http://www.grillbar.org/wordpress/?feed=rss2&#038;p=345" rel="self" type="application/rss+xml" />
	<link>http://www.grillbar.org/wordpress/?p=345</link>
	<description>the infernal output of Mikkel Kamstrup Erlandsen</description>
	<lastBuildDate>Mon, 30 Aug 2010 14:45:38 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: pvanhoof</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122695</link>
		<dc:creator>pvanhoof</dc:creator>
		<pubDate>Sun, 02 Aug 2009 22:47:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122695</guid>
		<description>We can (and will) help Zeitgeist with their SPARQL query requirements. We can for example implement certain custom FILTER functions for Zeitgeist (if necessary, because if functionality can be done using SPARQL&#039;s standard functions, then those should of course be used).

As many people already voiced here don&#039;t I think you should go for &#039;multiple backends&#039;: it would require some sort of abstract layer for the query language, or implementing a SPARQL -&gt; to -&gt; storage&#039;s native query language - function.

I think that for metadata SPARQL is ~ the language that we, desktop and mobile developers, should standardize on. So just do SPARQL UPDATE to insert your data into the store, use SPARQL to query it, and write custom ontologies if necessary. All tree are supported by Tracker&#039;s master, by the way.</description>
		<content:encoded><![CDATA[<p>We can (and will) help Zeitgeist with their SPARQL query requirements. We can for example implement certain custom FILTER functions for Zeitgeist (if necessary, because if functionality can be done using SPARQL&#8217;s standard functions, then those should of course be used).</p>
<p>As many people already voiced here don&#8217;t I think you should go for &#8216;multiple backends&#8217;: it would require some sort of abstract layer for the query language, or implementing a SPARQL -&gt; to -&gt; storage&#8217;s native query language &#8211; function.</p>
<p>I think that for metadata SPARQL is ~ the language that we, desktop and mobile developers, should standardize on. So just do SPARQL UPDATE to insert your data into the store, use SPARQL to query it, and write custom ontologies if necessary. All tree are supported by Tracker&#8217;s master, by the way.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kamstrup</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122686</link>
		<dc:creator>kamstrup</dc:creator>
		<pubDate>Sun, 02 Aug 2009 18:10:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122686</guid>
		<description>@Jos - There is something very elegant about CouchDB indeed!

About events - what you are describing is really a version controlled triple store. Store all objects with full history and the event log will be completely redundant. As it stands I am not sure that this is feasible and/or a good idea. 

You may have events that are far less tangible than files and emails etc. Consider mouse gesutures, system notifications, unlocking the screen after screen lock, approaching the computer with your bluetooth enabled device, etc.</description>
		<content:encoded><![CDATA[<p>@Jos &#8211; There is something very elegant about CouchDB indeed!</p>
<p>About events &#8211; what you are describing is really a version controlled triple store. Store all objects with full history and the event log will be completely redundant. As it stands I am not sure that this is feasible and/or a good idea. </p>
<p>You may have events that are far less tangible than files and emails etc. Consider mouse gesutures, system notifications, unlocking the screen after screen lock, approaching the computer with your bluetooth enabled device, etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jos</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122683</link>
		<dc:creator>Jos</dc:creator>
		<pubDate>Sun, 02 Aug 2009 15:36:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122683</guid>
		<description>@kamstrup You managed to get me to start reading the CouchDB book. It is an interesting read. I like the views. Instead of a filesystem, a CouchDB might be used as a versioned filessytem with automatic indexing and event logging. Linux is stuck with the POSIX API and CouchDB is a refreshing simple alternative storage system.

As to where to store all the data, I&#039;d say everything is an event. If I write a file, that is an event, so the file contents should go into the event log. When I receive an email, that&#039;s an event, the content of the mail should be in the same storage that records the event.

Any new event stored should trigger the appropriate analysis calls. These can be map/reduce functions, SPARQL queries and metadata extractors. The results of these all wander in temporary indexes/caches/views that provide the user interface with nice views on the data.</description>
		<content:encoded><![CDATA[<p>@kamstrup You managed to get me to start reading the CouchDB book. It is an interesting read. I like the views. Instead of a filesystem, a CouchDB might be used as a versioned filessytem with automatic indexing and event logging. Linux is stuck with the POSIX API and CouchDB is a refreshing simple alternative storage system.</p>
<p>As to where to store all the data, I&#8217;d say everything is an event. If I write a file, that is an event, so the file contents should go into the event log. When I receive an email, that&#8217;s an event, the content of the mail should be in the same storage that records the event.</p>
<p>Any new event stored should trigger the appropriate analysis calls. These can be map/reduce functions, SPARQL queries and metadata extractors. The results of these all wander in temporary indexes/caches/views that provide the user interface with nice views on the data.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RainCT</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122680</link>
		<dc:creator>RainCT</dc:creator>
		<pubDate>Sun, 02 Aug 2009 13:05:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122680</guid>
		<description>I have to admit I haven&#039;t looked at Tracker yet (so maybe once I see it I may change my opinion), but at the moment my idea is that once Tracker supports events (so that we can store everything in there and don&#039;t need to keep events in our own database, which wouldn&#039;t work performance-wise given the sort of queries we have) we should switch over to it.

With that approach I&#039;d see Zeitgeist kind of as an &quot;extension&quot; to Tracker, where it&#039;s functions would be on one side, the logging of events, and on the other providing a high-level D-Bus API to easily access events and to get relationships between them (Seif&#039;s magic); this way we get to keep a very simple to use API but applications needing more advanced stuff (or maybe requiring more fine-grained control on what to fetch for performance reasons) have the chance to query Tracker directly. What are your thoughts on this?</description>
		<content:encoded><![CDATA[<p>I have to admit I haven&#8217;t looked at Tracker yet (so maybe once I see it I may change my opinion), but at the moment my idea is that once Tracker supports events (so that we can store everything in there and don&#8217;t need to keep events in our own database, which wouldn&#8217;t work performance-wise given the sort of queries we have) we should switch over to it.</p>
<p>With that approach I&#8217;d see Zeitgeist kind of as an &#8220;extension&#8221; to Tracker, where it&#8217;s functions would be on one side, the logging of events, and on the other providing a high-level D-Bus API to easily access events and to get relationships between them (Seif&#8217;s magic); this way we get to keep a very simple to use API but applications needing more advanced stuff (or maybe requiring more fine-grained control on what to fetch for performance reasons) have the chance to query Tracker directly. What are your thoughts on this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kamstrup</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122676</link>
		<dc:creator>kamstrup</dc:creator>
		<pubDate>Sun, 02 Aug 2009 11:54:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122676</guid>
		<description>@Cas: Events and Annotations are similar in the sense that they both have a many-to-many relationship with Items. But that is also where the similarities end.

Ofcourse if we go to the abstraction level of RDF graphs they are alike, but in a more structured datamodel they are very different.

Zeitgeist Items has metadata such as content type, mimetype, source type (where they are from fx. filesystem, web page, email account, ...), URL.

Events have such metadata as timestamp, the app emitting the event, what type of event (user action, system notification), what happended (created, modified, deleted, etc.), and some more.

Annotations are really identical to Items just with the extra property that they have a set of subjects.</description>
		<content:encoded><![CDATA[<p>@Cas: Events and Annotations are similar in the sense that they both have a many-to-many relationship with Items. But that is also where the similarities end.</p>
<p>Ofcourse if we go to the abstraction level of RDF graphs they are alike, but in a more structured datamodel they are very different.</p>
<p>Zeitgeist Items has metadata such as content type, mimetype, source type (where they are from fx. filesystem, web page, email account, &#8230;), URL.</p>
<p>Events have such metadata as timestamp, the app emitting the event, what type of event (user action, system notification), what happended (created, modified, deleted, etc.), and some more.</p>
<p>Annotations are really identical to Items just with the extra property that they have a set of subjects.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kamstrup</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122674</link>
		<dc:creator>kamstrup</dc:creator>
		<pubDate>Sun, 02 Aug 2009 11:47:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122674</guid>
		<description>@Benjamin: We are already at something like the 3rd rewrite :-) They are relatively cheap because everything is in Python (for now).

It is not impossible that we settle on one backend only. My brain storming is specifically to figure out if there exist a common abstraction that is powerful enough. If there ain&#039;t then we&#039;ll most likely marry ourselves to what ever fits best.</description>
		<content:encoded><![CDATA[<p>@Benjamin: We are already at something like the 3rd rewrite <img src='http://www.grillbar.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  They are relatively cheap because everything is in Python (for now).</p>
<p>It is not impossible that we settle on one backend only. My brain storming is specifically to figure out if there exist a common abstraction that is powerful enough. If there ain&#8217;t then we&#8217;ll most likely marry ourselves to what ever fits best.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kamstrup</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122673</link>
		<dc:creator>kamstrup</dc:creator>
		<pubDate>Sun, 02 Aug 2009 11:44:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122673</guid>
		<description>@Jamie: Zeitgeist is based on a semantic platform - rest assured. Events will adhere to some given Zeitgeist Event Ontology that we will define as the Zeitgeist project grows and we understand the problem scope better.

We will also use Nepomuk for describing the all non-Event objects.

And taking your attachment example - an attachment in itself will not be an event in Zeitgeist. You would have an event for when you send or received the parent email. I am not sure that Zeitgeist events would go to the granularity of specific attachments, but since we are Nepomuk based this is really something that depends on the apps submitting the events.</description>
		<content:encoded><![CDATA[<p>@Jamie: Zeitgeist is based on a semantic platform &#8211; rest assured. Events will adhere to some given Zeitgeist Event Ontology that we will define as the Zeitgeist project grows and we understand the problem scope better.</p>
<p>We will also use Nepomuk for describing the all non-Event objects.</p>
<p>And taking your attachment example &#8211; an attachment in itself will not be an event in Zeitgeist. You would have an event for when you send or received the parent email. I am not sure that Zeitgeist events would go to the granularity of specific attachments, but since we are Nepomuk based this is really something that depends on the apps submitting the events.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cas Adriani</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122664</link>
		<dc:creator>Cas Adriani</dc:creator>
		<pubDate>Sun, 02 Aug 2009 08:50:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122664</guid>
		<description>I don&#039;t see the structural difference between events and annotations. I think of it of as data and metadata no matter it are locations, tags, dates or whatever. I can understand you separate them if it makes the queries too complex or your backend doesn&#039;t hold date information.

Like Bejamin I agree choosing one backend instead of trying to make generic with an abstraction layer. Abstraction will slow down the development, narrow the possibilities and make everything much more complex then needed. 

Tracker also got my vote since it&#039;s active, specialized for files/program (meta)data and it&#039;s ontology and is not like an content repository which used to have the content itself. It&#039;s also close to Gnome and they&#039;re hopefully open to optimize their API for Zeitgeist.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t see the structural difference between events and annotations. I think of it of as data and metadata no matter it are locations, tags, dates or whatever. I can understand you separate them if it makes the queries too complex or your backend doesn&#8217;t hold date information.</p>
<p>Like Bejamin I agree choosing one backend instead of trying to make generic with an abstraction layer. Abstraction will slow down the development, narrow the possibilities and make everything much more complex then needed. </p>
<p>Tracker also got my vote since it&#8217;s active, specialized for files/program (meta)data and it&#8217;s ontology and is not like an content repository which used to have the content itself. It&#8217;s also close to Gnome and they&#8217;re hopefully open to optimize their API for Zeitgeist.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Benjamin Otte</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122645</link>
		<dc:creator>Benjamin Otte</dc:creator>
		<pubDate>Sat, 01 Aug 2009 21:52:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122645</guid>
		<description>Pick one backend and stick to it. I would have thought that the one-backend thing was common knowledge by now. But in case it&#039;s not, feel free to figure out why Phonon or wxWidgets are such jokes.

And keep in mind that you will throw away and redesign 3 more times anyway when you try to actually make useful applications from that data. (You might also want to tell that to the Nepomuk and Tracker guys.)

If I were you, I&#039;d go Tracker, because you&#039;ll likely get a bunch of people (read: Tracker hackers) that will implement features just for you, because you&#039;re the only real user of their awesome library. And also because Tracker has a proper idea what &quot;Items&quot; are and how to query them effectively. As opposed to SQL or soe such.</description>
		<content:encoded><![CDATA[<p>Pick one backend and stick to it. I would have thought that the one-backend thing was common knowledge by now. But in case it&#8217;s not, feel free to figure out why Phonon or wxWidgets are such jokes.</p>
<p>And keep in mind that you will throw away and redesign 3 more times anyway when you try to actually make useful applications from that data. (You might also want to tell that to the Nepomuk and Tracker guys.)</p>
<p>If I were you, I&#8217;d go Tracker, because you&#8217;ll likely get a bunch of people (read: Tracker hackers) that will implement features just for you, because you&#8217;re the only real user of their awesome library. And also because Tracker has a proper idea what &#8220;Items&#8221; are and how to query them effectively. As opposed to SQL or soe such.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jamie</title>
		<link>http://www.grillbar.org/wordpress/?p=345&#038;cpage=1#comment-122644</link>
		<dc:creator>Jamie</dc:creator>
		<pubDate>Sat, 01 Aug 2009 21:42:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.grillbar.org/wordpress/?p=345#comment-122644</guid>
		<description>well thats what we ontologies for - you know how to query it at design time.

the whole events thingy looks to be too generic to be useful - indeed it subverts an ontology. Differnt apps could use different names for events further destroying its usefulness and making it almost impossible to query

EG take a file attachment to an email, for zeitgeist this might be an event but for an ontology based system like tracker it is not - Its a semantic relationship defined in the onto.

The same could be said for file history, web history etc. These are all semantic relationships that belong in a structured onto and not loosely defined in a table

What zeitgeist should do IMO is copy what Dashboard did for beagle but store the events fired off as well in tracker for a limited time period (say 6 months) so it does not bloat up and use tracker to query them. When tracker goes into gnome as it should zeitgeist wont need to worry about other backends</description>
		<content:encoded><![CDATA[<p>well thats what we ontologies for &#8211; you know how to query it at design time.</p>
<p>the whole events thingy looks to be too generic to be useful &#8211; indeed it subverts an ontology. Differnt apps could use different names for events further destroying its usefulness and making it almost impossible to query</p>
<p>EG take a file attachment to an email, for zeitgeist this might be an event but for an ontology based system like tracker it is not &#8211; Its a semantic relationship defined in the onto.</p>
<p>The same could be said for file history, web history etc. These are all semantic relationships that belong in a structured onto and not loosely defined in a table</p>
<p>What zeitgeist should do IMO is copy what Dashboard did for beagle but store the events fired off as well in tracker for a limited time period (say 6 months) so it does not bloat up and use tracker to query them. When tracker goes into gnome as it should zeitgeist wont need to worry about other backends</p>
]]></content:encoded>
	</item>
</channel>
</rss>
