Skip to content

Instantly share code, notes, and snippets.


Tom Saleeba tomsaleeba

View GitHub Profile
tomsaleeba / extract-subgraph-3levels.rq
Last active Oct 23, 2018
Extracting RDF subgraphs using SPARQL
View extract-subgraph-3levels.rq
# this query extracts a subgraph from the selected subject (level 1) and two child levels
PREFIX aekos: <>
PREFIX some_dataset: <>
?s1 ?p1 ?o1 .
?s1 ?pv1 ?v1 .
?s2 ?p2 ?o2 .
?s2 ?pv2 ?v2 .
?s3 ?p3 ?o3 .
tomsaleeba / async-await-error-handling.js
Created Jul 24, 2018
NodeJS async/await error propagation
View async-await-error-handling.js
// direct as promise
;(function () {
const prefix = '[direct-promise level]'
async function direct () {
throw new Error(`${prefix} explosion`)
direct().then(() => {
console.log(`${prefix} success`)
}).catch(err => {
tomsaleeba /
Last active May 18, 2018
Bulk file rename

Assume have a directory of files in an project. We need to clone them all but rename and do a find+replace in them to work with another model name. The old model is plot and the new model is photo.

  1. Clone the directory and contents
    cp -r plot photo
    cd photo
  2. create a script to receive the results from our find:

tomsaleeba /
Last active May 16, 2018
Concatenating RDF Turtle files


When you have a series of *.ttl files in a directory and you want to cat them all together, you need to make sure you strip out the @prefix and only prepend it once to the output.

Use the following commands

# run *in* the directory with the TTL files
head -n 50 -q *.ttl | grep '^@prefix' | sort -u > header
time cat *.ttl | grep -v '^@prefix' | cat header - | gzip > $(basename $(pwd)).ttl.gz
rm header
tomsaleeba /
Created Mar 9, 2018
BASH wait command demo
#!/usr/bin/env bash
# short demo on how to wait for multiple jobs
echo 'start'
sleep 2 &
echo "do things that don't require job 1 output"
sleep 4 &
echo "do things that don't require job 2 output"
wait $job1

Keybase proof

I hereby claim:

  • I am tomsaleeba on github.
  • I am tomsaleeba ( on keybase.
  • I have a public key ASCQLgwf5nOen0sIm5tyL5yq_ZO2slYSfrfH69tm02Y91go

To claim this, I am signing this object: