What is that ?

There are some "small" Gnome applications that received much love and are now pretty complete and easily usable. I think about tomboy, getting things gnome, hamster principaly. These applications can be used quickly because unlike Evolution or KDE equivalent apps they don't have to fit in one predefined UI and they don't need any configuration. But these applications store their data in their own database so we can't link data from different apps.

My proposal is to create a set of ontologies that describe tomboy notes, gtg tasks, hamster activities... Then we will be able, for example, to link a todo with an activity and share tags between all these apps. (By the way nao ontology need color and icon support)

So developers of these apps (or of other apps I surely forgot), if you are interested in integrating your app with tracker, please propose an ontology draft for your app. Thanks

Oh, Well... I forgot that two months ago i didn't know what an ontology was, so here are some links that explains it for you:

Ontologies

Updates:

  • Removed the "note" specific ontology. It can be integrated as part of NFO.
  • Removed properties from Note. Are already available in nie:InformationElement

  • Note is a class now in the NFO ontology of Tracker.

Notes (Tomboy, Gnote, Conboy)

@prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
@prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# This class has been added to the NFO ontology 
# nfo:Note a rdfs:Class ;

note:Notebook a rdfs:Class ;
    rdfs:label "Category" ;
    rdfs:comment "A notebook" ;
    rdfs:subClassOf nie:InformationElement ;
    tracker:notify true .

# Use the inherited properties from nie:InformationElement
#
#note:content -> nie:plainTextContent
#
#note:containsNote -> nie:hasLogicalPart (under study)
#   replicating the model with bookmarks

Tasks (gtg)

@prefix task: <http://TODO.org/task#> .
@prefix note: <http://TODO.org/note#> .
@prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
@prefix nco: <http://www.semanticdesktop.org/ontologies/2007/03/22/nco#> .
@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
@prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
@prefix ncal: <http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
@prefix scal: <http://www.tracker-project.org/temp/scal#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

task: a tracker:Namespace, tracker:Ontology ;
    tracker:prefix "task" ;
    nao:lastModified "2010-03-09T11:00:00Z" .

task:Task a rdfs:Class ;
    rdfs:label "Task" ;
    rdfs:comment "A task." ;
    rdfs:subClassOf nie:InformationElement ;
    tracker:notify true .

task:hasSubtask a rdf:Property ;
    rdfs:label "hasSubtask" ;
    rdfs:domain task:Task ;
    rdfs:range task:Task .

# task:content -> nie:plainTextContent

# Check NCAL about these dates
task:doneDate a rdf:Property ;
    rdfs:label "doneDate" ;
    rdfs:domain task:Task ;
    rdfs:range ncal:NcalDateTime ;
    nrl:maxCardinality 1 ;
    rdfs:comment "The date the Task was done (task:status set to task:status-done)" .

task:dueDate a rdf:Property ;
    rdfs:label "dueDate" ;
    rdfs:domain task:Task ;
    rdfs:range ncal:NcalDateTime ;
    nrl:maxCardinality 1 ;
    rdfs:comment "The date the Task should be done." .

task:startDate a rdf:Property ;
    rdfs:label "startDate" ;
    rdfs:domain task:Task ;
    rdfs:range ncal:NcalDateTime ;
    nrl:maxCardinality 1 ;
    rdfs:comment "The date the performer started to do the task" .

# <frade> i'd use something more generic, like participant...
task:performer a rdf:Property ;
    rdfs:label "performer" ;
    rdfs:domain task:Task ;
    rdfs:range nco:Contact ;
    rdfs:comment "One or more nco:Contact (n-cardinality) that have to perform this task." .

# Check NCAL for the status values
task:Status a rdfs:Class ;
    rdfs:label "Status";
    rdfs:comment "Predefined instances of status for tasks" ;
    rdfs:subClassOf rdfs:Resource .

task:status-active a task:Status .
task:status-done a task:Status .
task:status-canceled a task:Status .

task:status a rdf:Property ;
    rdfs:label "status" ;
    rdfs:comment "Link of an task with its status" ;
    nrl:maxCardinality 1 ;
    rdfs:domain task:Task ;
    rdfs:range task:Status .

# This overlaps with NCAL?
# <feuloren >True : task:Task could be a subclass of ncal:Todo so we don't duplicate properties
# ncal:Todo have all the nneded properties but doesn't support tasks hierarchy 
task:percentComplete a rdf:Property ;
    rdfs:label "Percentage completed" ;
    rdfs:comment "% of the task completed" ;
    rdfs:domain task:Task ;
    rdfs:range xsd:integer ;
    nrl:maxCardinality 1 .

task:priority a rdf:Property ;
    rdfs:label "priority" ;
    rdfs:domain task:Task ;
    rdfs:range xsd:integer ;
    nrl:maxCardinality 1 .

task:Category a rdfs:Class ;
    rdfs:label "Category" ;
    rdfs:comment "A Category of tasks. Use nie:title to set the name of the Category." ;
    rdfs:subClassOf nie:InformationElement ;
    tracker:notify true .

task:containsTask a rdf:Property ;
    rdfs:label "containsTask" ;
    rdfs:domain task:Category ;
    rdfs:range task:Task ;
    rdfs:subPropertyOf nie:hasLogicalPart .

# This should be more generic... 
#  ... and what about link a Note with a location? or with a Music file? or with a picture?
#  powerful usecases!
task:fromNote a rdf:Property ;
    rdfs:label "fromDate" ;
    rdfs:comment "Links to a note:Note." ; #something like fromTask, but for notes
    rdfs:domain task:Task ;
    rdfs:range note:Note .

use nao for tags

Time Tracking (hamster)

very specific ontology, i didn't look at other time tracking apps :-(

<frade>This needs a deeper thought. Activities as described here are not very useful to link with other content.
<feuloren> my use case was :  link activities with tasks, then thanks to Zeitgeist you can automagically get the files used when working on this task (hamster:Fact provides the necessaary time interval)

@prefix hamster: <http://TODO.org/hamster#> .
@prefix note: <http://TODO.org/note#> .
@prefix task: <http://TODO.org/task#> .
@prefix nao: <http://www.semanticdesktop.org/ontologies/2007/08/15/nao#> .
@prefix nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#> .
@prefix nrl: <http://www.semanticdesktop.org/ontologies/2007/08/15/nrl#> .
@prefix ncal: <http://www.semanticdesktop.org/ontologies/2007/04/02/ncal#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tracker: <http://www.tracker-project.org/ontologies/tracker#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

hamster: a tracker:Namespace, tracker:Ontology ;
    tracker:prefix "hamster" ;
    nao:lastModified "2010-03-09T11:00:00Z" .

hamster:Activity a rdfs:Class ;
    rdfs:label "Activity" ;
    rdfs:comment "An Activity. Use nie:title to set the name of the Activity." ;
    rdfs:subClassOf nie:InformationElement ;
    tracker:notify true .

hamster:Fact a rdfs:Class ;
    rdfs:label "Fact" ;
    rdfs:comment "A Fact is the actual activity entry with start and end time, this is a representation of an Activity in time . Each Fact can have a comment with nie:comment." ;
    rdfs:subClassOf nie:InformationElement ;
    tracker:notify true .

hamster:Category a rdfs:Class ;
    rdfs:label "Category" ;
    rdfs:comment "A Category of activities. Use nie:title to set the name of the Category." ;
    rdfs:subClassOf nie:InformationElement ;
    tracker:notify true .

hamster:activity a rdf:Property ;
    rdfs:label "activity" ;
    rdfs:domain hamster:Fact ;
    rdfs:range hamster:Activity ;
    nrl:maxCardinality 1 .

hamster:startDate a rdf:Property ;
    rdfs:label "startDate" ;
    rdfs:domain hamster:Fact ;
    rdfs:range ncal:NcalDateTime ;
    nrl:maxCardinality 1 .

hamster:endDate a rdf:Property ;
    rdfs:label "endDate" ;
    rdfs:comment "The end time of the Fact. If the Fact is in progress don't use this property." ;
    rdfs:domain hamster:Fact ;
    rdfs:range ncal:NcalDateTime ;
    nrl:maxCardinality 1 .

hamster:containsActivity a rdf:Property ;
    rdfs:label "containsActivity" ;
    rdfs:domain hamster:Category ;
    rdfs:range hamster:Activity ;
    rdfs:subPropertyOf nie:hasLogicalPart .

#there is a gtg extension that let you start an Activity in Hamster; this property store the semantic info so there is a REAL link between the task and the activity.
hamster:fromTask a rdf:Property ;
    rdfs:label "fromTask" ;
    rdfs:domain hamster:Activity ;
    rdfs:range task:Task .

#something like fromTask, but from a Note
hamster:fromNote a rdf:Property ;
    rdfs:label "fromNote" ;
    rdfs:domain hamster:Activity ;
    rdfs:range note:Note .

Your lovely app

Attic/Tracker/Discussion/GnomeOntologies (last edited 2023-08-14 12:50:05 by CarlosGarnacho)