tracker-sparql(1)

NAME
tracker-sparql - Use SparQL to query the Tracker databases.

SYNOPSIS
tracker-sparql [OPTION...] [-q QUERY] | [-p FILE]

DESCRIPTION
tracker-sparql allows the caller to run an RDF query on the database. This can be done two ways. Either by providing a FILE with the query or by providing a string with the QUERY string. The FILE argument can be either a local path or a URI. It also does not have to be an absolute path.

OPTIONS

-?, --help
    Show summary of options.

-f, --file=FILE
    Use a file with SPARQL content to query.

-q, --query=SPARQL
    Use a SPARQL string to query the database with.

-u, --update
    This has to be used with --query. This tells tracker-sparql to use the SPARQL update extensions so it knows it isn't a regular data lookup request. So if your query is intended to change data in the database, this option is needed.

-c, --list-classes
    Returns a list of classes which describe the ontology used for storing data. These classes are also used in queries. For example, http://www.w3.org/2000/01/rdf-schema#Resource is one of many classes which should be returned here.

-x, --list-class-prefixes
    Returns a list of classes and their related prefixes. Prefixes are used to make querying a lot simpler and are much like an alias. For example, http://www.w3.org/2000/01/rdf-schema#Resource has the prefix rdfs so queries can be cut down to: "SELECT ?u WHERE { ?u a rdfs:Resource }"

-p, --list-properties=CLASS
    Returns a list of properties which pertain to a class. You can use both formats here for the class, either the full name http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Video or the shortened prefix name nfo:Video. This gives the following result: $ tracker-sparql -p nfo:Video Properties: 2
      http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#frameRate
      http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#frameCount These properties nfo:frameRate and nfo:frameCount can be used in more complex queries (see --query).

-s, --search=TERM
    Returns a list of classes and properties which partially match TERM in the ontology. This is a case insensitive match, for example: $ tracker-sparql -s text Classes: 4
      http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#TextDocument
      http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#PlainTextDocument
      http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#PaginatedTextDocument
      http://www.tracker-project.org/temp/nmm#SynchronizedText Properties: 5
      http://www.tracker-project.org/ontologies/tracker#fulltextIndexed
      http://www.tracker-project.org/ontologies/tracker#fulltextNoLimit
      http://www.semanticdesktop.org/ontologies/2007/01/19/nie#plainTextContent
      http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#plainTextMessageContent
      http://www.tracker-project.org/temp/scal#textLocation

-V, --version
    Print version.

EXAMPLES

List all classes
    $ tracker-sparql -q "SELECT ?cl WHERE { ?cl a rdfs:Class }"

List all properties for the Resources class (see --list-properties)
    $ tracker-sparql -q "SELECT ?prop WHERE {
          ?prop a rdf:Property ;
          rdfs:domain <http://www.w3.org/2000/01/rdf-schema#Resource>
     }"

List all class namespace prefixes
    $ tracker-sparql -q "SELECT ?prefix ?ns WHERE {
          ?ns a tracker:Namespace ;
          tracker:prefix ?prefix
     }"

List all music files
    $ tracker-sparql -q "SELECT ?song WHERE { ?song a nmm:MusicPiece }"

List all music albums
    $ tracker-sparql -q "SELECT ?album ?title COUNT(?song)
                         AS songs
                         SUM(?length) AS totallength
                         WHERE {
          ?album a nmm:MusicAlbum ;
          nie:title ?title .
          ?song nmm:musicAlbum ?album ;
          nfo:duration ?length
     } GROUP BY ?album"

List all music from a particular artist
    $ tracker-sparql -q "SELECT ?song ?title WHERE {
          ?song nmm:performer [ nmm:artistName 'Artist Name' ] ;
          nie:title ?title
     }"

Set the played count for a song
    $ tracker-sparql -u -q "DELETE {
          <file:///home/user/Music/song.mp3> nie:usageCounter ?count
     } WHERE {
          <file:///home/user/Music/song.mp3> nie:usageCounter ?count
     } INSERT {
          <file:///home/user/Music/song.mp3> nie:usageCounter 42
     }"

List all image files
    $ tracker-sparql -q "SELECT ?image WHERE { ?image a nfo:Image }"

List all image files with a specific tag
    $ tracker-sparql -q "SELECT ?image WHERE {
          ?image a nfo:Image ;
          nao:hasTag [ nao:prefLabel 'tag' ]
     }"

List all image files created on a specific month and order by date
    $ tracker-sparql -q "SELECT ?image ?date WHERE {
          ?image a nfo:Image ;
          nie:contentCreated ?date .
          FILTER (?date >= '2008-07-01T00:00:00' &&
                  ?date < '2008-08-01T00:00:00')
     } ORDER BY ?date"

SEE ALSO
tracker-store(1), tracker-info(1).

http://nepomuk.semanticdesktop.org/

http://www.w3.org/TR/rdf-sparql-query/