aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile10
-rwxr-xr-xbin/xmp2rdfxml25
2 files changed, 35 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index af1651b..beaa1f7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,5 @@
+BASE_IRI = https://thoughtroam.abcdefghijklmnopqrstuvxyzæøå.dk/
+
ARTICLES = learn code use
all: preview
@@ -23,3 +25,11 @@ $(ARTICLES:%=wordcount-of-%): wordcount-of-%:
QUARTO_LOG_LEVEL=quiet \
quarto render $*/index.qmd --to plain --columns=9999 --output - \
| perl -nE 'next if /^-*$$/; $$bilag += $$_ eq "Bilag 1\n"; $$chars += length unless $$bilag; END { say $$chars }'
+
+$(ARTICLES:%=turtle-from-%): turtle-from-%: _site/%/index.pdf
+ @bin/xmp2rdfxml _site/$*/index.pdf \
+ | rapper -i rdfxml -o turtle - $(BASE_IRI)$*/
+
+$(ARTICLES:%=dotgraph-from-%): dotgraph-from-%: _site/%/index.pdf
+ @bin/xmp2rdfxml _site/$*/index.pdf \
+ | rapper -i rdfxml -o dot - $(BASE_IRI)$*/
diff --git a/bin/xmp2rdfxml b/bin/xmp2rdfxml
new file mode 100755
index 0000000..81011b9
--- /dev/null
+++ b/bin/xmp2rdfxml
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+# extract XMP data from PDF file and unwrap as generic RDF/XML
+
+use v5.36;
+use strict;
+
+use PDF::API2;
+
+my $xml = PDF::API2->open( $ARGV[0] )->xml_metadata();
+
+# strip noise
+$xml =~ s,^PDF version of requested feature [^<]*,,;
+
+# replace whitespace and surrounding XMP boilerplate with XML boilerplate
+$xml =~ s,\s*<\?xpacket [^>]+>\s*,,;
+$xml =~ s,<x:xmpmeta [^>]+>,<?xml version="1.0" encoding="utf-8"?>,;
+
+# strip trailing boilerplate
+$xml =~ s,\s*</x:xmpmeta>,,;
+$xml =~ s,\s*<\?xpacket [^>]+>,,;
+
+say $xml;
+
+1;