Use arbitrary predicates and arbitrary objects in Tracker
Table of contents
The context
I've never used Tracker before, but I'm aware it can be used as a triplestore. As far as I'm concerned, it is used by Gnome applications to index data. I'm more interested in defining my own knowledge graph with custom properties and custom entities, so I want to know if tracker can be used to add arbitrary predicates with arbitrary objects to a set of files. The reason why I'm asking is because I have a big set of PDF files and I would like to add metadata to them so that I can easily search them. I want to be able to answer the following questions
- What are all the things that have been authored by a given person?
- I would manuall add the data to each PDF through a property called
author
andinstanceOf
to know what a PDF contains (e.g. book, master's thesis, doctoral thesis, journal article, proceedings, etc.)
- I would manuall add the data to each PDF through a property called
- Which of my PDF files include annotations (e.g. inline text, pop-up notes)?
- I would manuall add the data to each PDF through a property called
MetadataHasAnnotations
- I would manuall add the data to each PDF through a property called
- Which of my PDF files include a table of contents in its metadata?
- I would manually add the data to each PDF through a property called
MetadataHasTableOfContents
- I would manually add the data to each PDF through a property called
Just to have an idea of what I'm trying to do, the Wikidata query shown in the code block below can be used to list all the things (scholarly articles, books, magazine articles, etc.) that were authored by Donald Knuth (link to execution in Wikidata). I'd like to create a bash script that prompts for the name of a person and executes a SPARQL query similar to that shown below in order to list all the things that were authored by that person.
SELECT
?instanceOf
?instanceOfLabel
?thing
?thingLabel
{
?thing
wdt:P31 ?instanceOf;
wdt:P50 wd:Q17457;
rdfs:label ?thingLabel.
?instanceOf rdfs:label ?instanceOfLabel.
FILTER(LANG(?thingLabel) = "en"
&& LANG(?instanceOfLabel) = "en").
}
ORDER BY
?instanceOfLabel
?thingLabel
The question
If it is possible to add arbitrary properties and objects, could you point me to some resources where I can find documentation?