forked from ontodev/rdftab.rs
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
102 lines (83 loc) · 2.53 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Requirements
#
# Java 8+
# Python xlsx2csv https://github.com/dilshod/xlsx2csv
# librdf raptor2 http://librdf.org/raptor/
SHEETS = prefix thin
SHEET_TSVS = $(foreach o,$(SHEETS),build/$(o).tsv)
ROBOT := java -jar bin/robot.jar
.PHONY: all
all: build/roundtrip-thin.diff
.PHONY: clean
clean:
rm -rf build
.PHONY: clobber
clobber: clean
rm -rf bin
build bin:
mkdir -p $@
bin/robot.jar: | bin
curl -L -o $@ https://build.obolibrary.io/job/ontodev/job/robot/job/master/lastSuccessfulBuild/artifact/bin/robot.jar
build/thick.xlsx: | build
curl -L -o $@ "https://docs.google.com/spreadsheets/d/19zS8lHUM5cU_Nf9Rc7-TGL6wesOD8JLINJSan3DmPqE/export?format=xlsx"
$(SHEET_TSVS): build/thick.xlsx
xlsx2csv --ignoreempty --delimiter tab --sheetname $(basename $(notdir $@)) $< > $@
build/prefix.sql: build/prefix.tsv | build
echo "CREATE TABLE IF NOT EXISTS prefix (" > $@
echo " prefix TEXT PRIMARY KEY," >> $@
echo " base TEXT NOT NULL" >> $@
echo ");" >> $@
echo "INSERT OR IGNORE INTO prefix VALUES" >> $@
tail -n+2 $< \
| sed 's/\(.*\)\t\(.*\)/("\1", "\2"),/' \
| tac \
| sed '0,/,$$/ s/,$$/;/'\
| tac \
>> $@
build/thin.sql: build/thin.tsv
echo "CREATE TABLE IF NOT EXISTS statements (" > $@
echo " stanza TEXT NOT NULL," >> $@
echo " subject TEXT NOT NULL," >> $@
echo " predicate TEXT NOT NULL," >> $@
echo " object TEXT," >> $@
echo " value TEXT," >> $@
echo " datatype TEXT," >> $@
echo " language TEXT" >> $@
echo ");" >> $@
echo "INSERT OR IGNORE INTO statements VALUES" >> $@
tail -n+2 $< \
| awk -v FS='\t' -v OFS='\t' '{print $$1,$$2,$$3,$$4,$$5,$$6,$$7}' \
| sed 's/\t/", "/g' \
| sed 's/^/("/g' \
| sed 's/$$/"),/g' \
| sed 's/""/NULL/g' \
| tac \
| sed '0,/,$$/ s/,$$/;/'\
| tac \
>> $@
build/thin.db: build/prefix.sql build/thin.sql
rm -f $@
cat $^ | sqlite3 $@
build/thin.ttl: build/thin.db
sqlite3 $< < src/turtle.sql > $@
build/thin.owl: build/thin.ttl | bin/robot.jar
$(ROBOT) convert --input $< --output $@
build/thin.rdf: build/thin.ttl
rapper -i turtle -o rdfxml-abbrev $< > $@
target/release/rdftab: src/main.rs
cargo build --release
build/roundtrip-thin.db: target/release/rdftab build/prefix.sql build/thin.rdf
rm -f $@
sqlite3 $@ < $(word 2,$^)
$< $@ < $(word 3,$^)
build/roundtrip-thin.tsv: build/roundtrip-thin.db
sqlite3 $< ".mode tabs" ".header on" "select * from statements" \
| sed s/_:riog0000000./_:b/g \
| sort \
> $@
build/sorted-thin.tsv: build/thin.tsv
sed s/_:b./_:b/g $< \
| sort \
> $@
build/roundtrip-thin.diff: build/sorted-thin.tsv build/roundtrip-thin.tsv
diff $^