uholzer / pkb4unix

Tools to manage a personal knowledge base using RDF and SPARQL
GNU General Public License v3.0
3 stars 2 forks source link

PKB4Unix Tools to handle RDF graphs, inspired by the UNIX philosophy

PKB4Unix provides several command line tools to process RDF graphs. Each of them take ntriples as input and output ntriples. As such, they can be used easily in pipelines. The ntriples format is line based, but is also valid turtle. Also included is a tool that converts between various serialization formats. It is also capable of producing canonical ntriples and turtle, which makes its output suitable for version control. PKB4Unix was originally intended to manage a personal knowledge base. The project may however have wider applications. It may be split up or adapted in the future.

For more information see

http://www.andonyar.com/rec/2012/pkb/

=== Requirements ===

=== Setup ===

Run

python3 setup.py install

or if you want to install to your user directory

python3 setup.py install --user

You can also test the scripts where they are. For this, add the directory to your PATH.

=== Environment Variables ===

Most scripts know-* need a few environment variables to be set. You are advised to run the scripts through the wrapper know. It allows you to easily set these variables using command line options. Use know help to find out what options are required and to which value they are currently set.

=== Usage ===

Find out what commands are available:

know help

Read the help of a command:

know <command> --help

=== Example Session ===

Starting my SPARQL backend

$ ./tomcat-instance/bin/startup.sh 
...
Tomcat started

Loading my data into the endpoint

$ know load data/*
data/friends.rdf: loading as file:///home/urs/p/knowledge/data/friends.rdf ... done.
data/interesting_websites.ttl: loading as file:///home/urs/p/knowledge/data/interesting_websites.ttl ... done.
data/problemandsolution.ttl: loading as file:///home/urs/p/knowledge/data/problemandsolution.ttl ... done.
data/quotes.ttl: loading as file:///home/urs/p/knowledge/data/quotes.ttl ... done.
data/software.ttl: loading as file:///home/urs/p/knowledge/data/software.ttl ... done.
data/tracker.rdf: loading as file:///home/urs/p/knowledge/data/tracker.rdf ... done.

Interactively constructing a new task

$ know construct ~/.local/share/pkb4unix/templates/task.tmpl
/home/urs/.local/bin/know-construct: Constructing graph urn:uuid:b6667453-3a99-41d5-9ad0-e5419d9a3f69
Available commands:
! CMD
    Executes CMD in a shell
| CMD
    Executes CMD in a shell and takes output as value
@
    Same as `| know edit --null`

=== http://www.w3.org/2005/01/wf/flow#Task
I will insert the following triples:
    ?task a wf:Open ;
          wf:tracker ?tracker ;
          wf:dateDue ?dateDue ;
          wf:dependent ?dependent ;
          wf:description ?description .

CONSTRUCTING Creating an open task> | know rdf-uuid
RESOURCE1/1 [wf:Tracker] tracked by> private:tracker
LITERAL1/? [^^xsd:date] date this task has to be completed> 2013-05-15
RESOURCE1/* [wf:Task] A task this one depends on> 
LITERAL1/1 description> Finish publication of Carambola manual
Adding tribles with SPARQL:
INSERT {
    ?task a wf:Open ;
          wf:tracker ?tracker ;
          wf:dateDue ?dateDue ;
          wf:dependent ?dependent ;
          wf:description ?description .
}
WHERE {
VALUES (?task) { (<urn:uuid:126b72a8-cc93-4353-afd2-8ce7acdca5be>) }
VALUES (?dateDue) { ("2013-05-15"^^<http://www.w3.org/2001/XMLSchema#date>) }
VALUES (?description) { ("Finish publication of Carambola manual") }
VALUES (?tracker) { (<private:tracker>) }
}
=== done

## At this point an editor is called to check the created graph
## and modify if necessary.

STDIN: loading as urn:uuid:7ce4218b-343a-46c1-b13b-6b816c13be85 ... done.

/home/urs/.local/bin/know-construct: Construction of graph urn:uuid:b6667453-3a99-41d5-9ad0-e5419d9a3f69 completed.

Merging with the tracker graph

$ know merge data/tracker.rdf urn:uuid:7ce4218b-343a-46c1-b13b-6b816c13be85

Saving the tracker graph to file

$ know save data/tracker.rdf 
Saving file:///home/urs/p/knowledge/data/tracker.rdf to /home/urs/p/knowledge/data/tracker.rdf ...
$ cat data/tracker.rdf
...
<rdf:Description rdf:about="private:tracker">
        <rdf:type rdf:resource="http://www.w3.org/2005/01/wf/flow#Tracker"/>
        <description xmlns="http://www.w3.org/2005/01/wf/flow#">My private tracker</description>
</rdf:Description>

<rdf:Description rdf:about="urn:uuid:126b72a8-cc93-4353-afd2-8ce7acdca5be">
        <rdf:type rdf:resource="http://www.w3.org/2005/01/wf/flow#Open"/>
        <description xmlns="http://www.w3.org/2005/01/wf/flow#">Finish publication of Carambola manual</description>
        <tracker xmlns="http://www.w3.org/2005/01/wf/flow#" rdf:resource="private:tracker"/>
        <dateDue xmlns="http://www.w3.org/2005/01/wf/flow#" rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2013-05-15</dateDue>
</rdf:Description>

Stopping the SPARQL backend

$ ./tomcat-instance/bin/shutdown.sh 
...
Tomcat stopped 

=== License ===

pkb4unix is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.