dito-mapping
controleren op vermeldingen van (BNODE( in alle sparql templates
grep -r "(BNODE(" .
trefwoorden in gebruik
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT distinct ?value
WHERE {
?object ?predicate ?value .
FILTER STRSTARTS(STR(?value), "https://hetutrechtsarchief.nl/id/twd/")
}
voorbeeld inventarisnummer bnode
...
?b_inventarisnummer a rico:Identifier ;
rico:hasIdentifierType def:Inventarisnummer ;
rdfs:label ?lbl_inventarisnummer ;
rico:textualValue ?inventarisnummer ;
.
} WHERE {
OPTIONAL {
?doc hasc:inventarisnummer ?inventarisnummer ;
BIND(fn:bnode1(?doc,"inventarisnummer") AS ?b_inventarisnummer)
BIND(CONCAT("Inventarisnummer: ",?inventarisnummer) AS ?lbl_inventarisnummer)
}
voorbeeld met bnode met alleen naam van het veld
# construct
?b_vertaling a sdo:Text ;
sdo:text ?vertaling ;
sdo:additionalType def:Vertaling ;
.
# where
OPTIONAL { ?doc tsc:vertaling ?vertaling }
BIND(fn:bnode1(?doc,"vertaling") AS ?b_vertaling)
voorbeeld bnode en label
BIND(fn:bnode(?doc,"inventarisnummer",?inventarisnummer) AS ?b_inventarisnummer)
BIND(CONCAT("Inventarisnummer: ",?inventarisnummer) AS ?lbl_inventarisnummer)
BINDs voor bnodes en labels
BIND(fn:bnode(?doc,"dossiernr_kvk",?dossiernr_kvk) AS ?b_dossiernr_kvk)
BIND(fn:bnode(?doc,"inventarisnummer",?inventarisnummer) AS ?b_inventarisnummer)
BIND(fn:bnode(?doc,"jaar_sluiting",?jaar_sluiting) AS ?b_jaar_sluiting)
BIND(fn:bnode(?doc,"standplaats_kvk",?standplaats_kvk) AS ?b_standplaats_kvk)
BIND(fn:bnode(?doc,"vestigingsplaats",?vestigingsplaats) AS ?b_vestigingsplaats)
BIND(CONCAT("Inventarisnummer: ",?inventarisnummer) AS ?lbl_inventarisnummer)
BIND(CONCAT("Jaar van sluiting: ",?jaar_sluiting) AS ?lbl_jaar_sluiting)
BIND(CONCAT("Dossiernr KvK: ",?dossiernr_kvk) AS ?lbl_dossiernr_kvk)
BIND(CONCAT("Standplaats KvK: ",?standplaats_kvk) AS ?lbl_standplaats_kvk)
BIND(CONCAT("Vestigingsplaats: ",?vestigingsplaats) AS ?lbl_vestigingsplaats)
BIND (STRDT(?jaar_sluiting, xsd:year) AS ?jaar_sluiting) # waarom kan dit niet met xsd:year?
identifier
?b_rubriek a rico:Identifier ;
rico:hasIdentifierType def:RubriekCode ;
rico:textualValue ?nummer_code;
.
...
BIND(IRI(CONCAT(STR(?doc), "/rubriek_",fn:escape(?nummer_code))) AS ?b_rubriek)
inventarisnummer
BIND(IRI(CONCAT(STR(?doc), "/inventarisnummer",fn:escape(?inventarisnummer))) AS ?b_inventarisnummer)
...
?b_inventarisnummer a rico:Identifier ;
rico:hasIdentifierType def:Inventarisnummer ;
rico:textualValue ?inventarisnummer ;
.
boilerplate
CONSTRUCT {
?doc a sdo:ArchiveComponent .
?doc sdo:isPartOf ?isPartOf .
?doc rdfs:label ?label .
?doc sdo:additionalType aet:tscni .
} WHERE {
?doc a aet:tscni .
?doc mf:is_part_of ?isPartOf .
?doc mf:beschrijving ?label .
}
Imageserver
BIND(fn:image_server(?doc,'thumb') AS ?thumbnail)
COALESCE
BIND(CONCAT(COALESCE(?nummer,""),COALESCE(?code,"")) AS ?nummer_en_code)
Custom functions
fn:datering_bj_ej(a,b) # creates a date period from two separate days. It also formats it as ISO 8601
fn:datering(a) # takes a date or date period and formats it as ISO 8601
fn:get_first_year(a) # get first year from a date range: 1800-1900 returns 1800
fn:get_last_year(a) # get last year from a date range: 1800-1900 returns 1900
fn:date(a) # formats a single date to ISO 8601
fn:fullname(?voornaam, ?tussenvoegsel, ?achternaam)