Skip to content

Instantly share code, notes, and snippets.

@coret
coret / map-proxy.php
Created October 16, 2025 11:15
Dit PHP-bestand fungeert als een proxy en cache voor kaart-(tile)afbeeldingen van een beperkt aantal toegestane bronnen. Het doel is om kaarten van externe WMS- of tile-servers lokaal op te slaan, zodat latere verzoeken sneller geladen worden en de externe servers minder worden belast.
<?php
define('SECONDS_TO_CACHE', 30 /* dagen */ * 24 /* uur */ * 3600 /* seconden */);
define('CACHE_DIRECTORY', '****' ); // deze directory moet bestaan op het bestandssysteem
# Beperk het aantal domeinen die via deze proxy opgevraagd en gecachet mogen worden:
$toegestaneDomeinen = [
"https://mapwarper.net/" => "mapwarper.net",
"https://gis.gouda.nl/" => "gis.gouda.nl",
"https://geo.rug.nl/" => "geo.rug.nl"
@coret
coret / item-sets-tree.phtml
Created August 26, 2025 07:28
view/item-sets-tree/item-sets-tree.phtml
<?php
$displayCount = $displayCount ?? false;
$displayDescription = $displayDescription ?? false;
$linkEmpty = $linkEmpty ?? true;
?>
<?php if (!empty($itemSetsTree)): ?>
<ul class="item-sets-tree">
<?php foreach ($itemSetsTree as $itemSetsTreeNode): ?>
<?php $itemSet = $itemSetsTreeNode['itemSet']; ?>
<?php if ($displayCount || !$linkEmpty): ?>
@coret
coret / swap-uri.py
Created August 20, 2025 18:00
owl:sameAs defined URI swap via text search-and-replace on multi-GB N-triple file
import re
import sys
import mmap
def build_swap_dict_fast(filename):
swap = {}
sameas_pattern = re.compile(rb'<(.*?)>\s*<http://www\.w3\.org/2002/07/owl#sameAs>\s*<(.*?)>')
with open(filename, "rb") as f:
mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
@coret
coret / dataset-delete.sh
Created June 26, 2025 19:53
Bashscript to remove a datasetdescription from the NDE Dataset Register triplestore.
#!/usr/bin/bash
# This Bash script requires an .env file with the following lines:
# SERVER=https://triplestore.netwerkdigitaalerfgoed.nl
# USERNAME=username_with_admin_privileges
# PASSWORD=password
# REPOSITORY=registry
# Exit immediately if a command exits with a non-zero status.
set -e
@coret
coret / dataset-knowledge-graphs__src__analyzer.ts
Created May 25, 2025 12:49
Added some code to get information on query and runtime
import {Store} from 'n3';
import {readFile} from 'node:fs/promises';
import {resolve} from 'node:path';
import {Dataset, Distribution} from './dataset.js';
import {Failure, NotSupported, Success} from './pipeline.js';
import {Stream} from '@rdfjs/types';
import {SparqlEndpointFetcher} from 'fetch-sparql-endpoint';
import type {Readable} from 'node:stream';
export interface Analyzer {
@coret
coret / distribution-check.sh
Last active March 31, 2025 10:45
Dataset distribution check (HTTP HEAD) based on a query to DCAT data in the NDE Dataset Register.
#!/bin/bash
url_tsv_file="urls.$(date +%Y%m%d).tsv"
report_file="report.$(date +%Y%m%d).tsv"
echo "1. Getting all accessURL and downloadURL values from https://triplestore.netwerkdigitaalerfgoed.nl/sparql to store in $url_tsv_file"
curl 'https://triplestore.netwerkdigitaalerfgoed.nl/repositories/registry' \
-H 'X-GraphDB-Repository: registry' \
-H 'X-Requested-With: XMLHttpRequest' \
@coret
coret / multipleissueminimal-1.ttl
Created April 5, 2023 11:13
Multiple children of property element, rdf or riot issue?
# conversion via https://converter.zazuko.com/
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix dc11: <http://purl.org/dc/elements/1.1/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
<https://archief.nl/doc/fotorecord/f33a864a-1f8c-4697-2303-5c4e56c39011> a <https://archief.nl/def/ontologie/Recordaggregatie> ;
<http://www.openarchives.org/ore/terms/aggregates> <https://archief.nl/id/beschrijving/f33a864a-1f8c-4697-2303-5c4e56c39011> .
@coret
coret / gedcom-7.0-rc1.grammar
Created February 23, 2021 21:52
Grammar extracted from the GEDCOM 7.0 rc1 Specification published at https://gedcom.io/
GEDCOM Document :=
0 <<HEADER>> {1:1}
0 <<RECORD>> {0:M}
0 TRLR {1:1}
RECORD :=
[
n <<FAMILY_RECORD>> {1:1}
|
n <<INDIVIDUAL_RECORD>> {1:1}
@coret
coret / gedcom-5.5.5.grammar
Last active October 2, 2025 08:10
Grammar extracted from the GEDCOM 5.5.5 Specification (2019-10-05) published at https://www.gedcom.org
GEDCOM_FILE:=
0 <<GEDCOM_HEADER>> {1:1}
+1 <<GEDCOM_FORM_HEADER_EXTENSION>> {1:1}
0 <<FORM_RECORDS>> {1:1}
0 <<GEDCOM_TRAILER>> {1:1}
CHARACTER_ENCODING:= {Size=5|7}
[ UTF-8 | UNICODE | ANSEL | ASCII ]
GEDCOM_VERSION_NUMBER:= {Size=3:11}
Response 400: http://geldersarchief.brpinternet.nl/nl/producttemplates/defprodtempl.htm?prod=222
Response 400: http://www.europeana.eu/portal/search.html?start=50017&query=*%3A*&qf=TYPE:VIDEO
Response 401: http://obplaza.obd.nl/prod/intranet/webgen.nsf
Response 401: http://www.hum.uu.nl/memorie/index.php
Response 401: http://www.scj.nl/OverOns/Overledenen/InMemoriamboek.aspx
Response 403: http://ad01.vtech.fr/
Response 403: http://adresboeken.geschiedenisvanalkmaar.nl/
Response 403: http://bouwdossiers.groningen.nl/
Response 403: http://casper.frontier.nl/
Response 403: http://kamertweets.nl/