File size: 2,233 Bytes
ce0d85d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
.PHONY: all tokenize ontology background induction induced asp forth clean demo

all: background induction induced asp forth
	@echo ""
	@echo "=== PIPELINE COMPLETE ==="
	@echo "Check: ontology_induced.xml  — what ILP proposed"
	@echo "Check: induction.log         — rules learned"
	@echo "Run:   make demo"

# Step 1: corpus_tokens.xml already committed (from sample_corpus.txt)
tokenize:
	@echo "[1/7] corpus_tokens.xml ready"

# Step 2: background Prolog facts from ontology.xml (ZERO PYTHON)
background:
	@echo "[2/7] Background facts via XSLT"
	xsltproc corpus_to_background.xslt ontology.xml > background.pl

# Step 3: ILP engine generated by XSLT from ontology.xml (meta-trick)
induction:
	@echo "[3/7] ILP engine via XSLT (XSLT generates Prolog)"
	xsltproc ontology_to_induction.xslt ontology.xml > ontology_induction_generated.pl

# Step 4: Run ILP — learn rules + propose new members
induced:
	@echo "[4/7] ILP Induction"
	swipl -s ontology_induction_generated.pl -g "halt." 2>&1 | tee induction.log
	@echo "--- ILP output ---"
	@cat induction.log

# Step 5: ASP validation (clingo rejects contradictions)
asp:
	@echo "[5/7] ASP Validation"
	xsltproc ontology_to_asp.xslt ontology_induced.xml > ontology_induced_facts.asp
	cat ontology_induced_facts.asp ontology.asp > ontology_validated.asp
	clingo ontology_validated.asp 0 && echo "ASP: SATISFIABLE" || echo "ASP: UNSAT — contradiction detected, rejected"

# Step 6: FORTH generation (XML -> FORTH dictionary)
forth:
	@echo "[6/7] FORTH Generation"
	xsltproc corpus_to_forth.xslt corpus_tokens.xml > generated_corpus_induced.fth
	@echo "FORTH written to generated_corpus_induced.fth"

# Run the FORTH
demo:
	@echo "[7/7] Running FORTH"
	gforth generated_corpus_induced.fth

# Direct run of pre-generated FORTH (no xsltproc needed)
demo-prebuilt:
	gforth generated_corpus_induced.fth

clean:
	rm -f background.pl ontology_induction_generated.pl induction.log
	rm -f ontology_induced_facts.asp ontology_validated.asp
	rm -f generated_corpus_induced.fth

# Install dependencies
deps-mac:
	brew install libxslt swi-prolog clingo gforth

deps-linux:
	sudo apt install -y xsltproc swi-prolog gringo gforth