Queries om inhoud van de RCE CHO dataset te checken

Inleiding tot RCE Linked Data en SPARQL Voorbeeldquery's

Deze documentatie presenteert een verzameling SPARQL-query's die ontworpen zijn om te interageren met de Linked Data van de Rijksdienst voor het Cultureel Erfgoed (RCE). Deze query's dienen zowel om de integriteit en structuur van de RCE Linked Data te controleren, als om te dienen als voorbeeldquery's voor degenen die geïnteresseerd zijn in het leren hoe ze deze waardevolle databron kunnen gebruiken.

Elke query wordt gepresenteerd met een gedetailleerde uitleg van de structuur en het doel, evenals de specifieke componenten die in de query worden gebruikt. Dit omvat zowel de basis-SPARQL-syntax en -commando's, als specifieke terminologie en prefixen die relevant zijn voor de RCE Linked Data.

Deze query's worden gepresenteerd als onderdeel van een voortdurende inspanning om de toegang tot en het gebruik van open, gestructureerde data in de culturele sector te bevorderen. Of je nu een datawetenschapper, een onderzoeker, een ontwikkelaar of gewoon nieuwsgierig bent naar de mogelijkheden van Linked Data, we hopen dat deze voorbeeldquery's je zullen helpen om meer inzicht te krijgen in de kracht van SPARQL en de rijke data die beschikbaar zijn via de RCE.

Voor uitleg over de ceo ontologie, volg dan deze story.

Voor uitleg over SPARQL en het Yasgui endpoint volg deze links als startpunt.

De data worden dagelijks ververst.

0. Ophalen van de Eerste 10 Triples

Deze eenvoudige SPARQL-query haalt de eerste 10 triples (bestaande uit een subject, predicaat en object) op van de endpoint https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql. De query is zeer algemeen en zal alle soorten triples matchen zonder specifieke beperkingen.

# Definieer PREFIXes die in de query worden gebruikt.
PREFIX ceox: <https://linkeddata.cultureelerfgoed.nl/def/ceox#>
PREFIX ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

# SELECT *: haalt alle variabelen op die in de WHERE-clausule worden genoemd.
SELECT * WHERE {
  
  # Dit patroon matcht elke mogelijke triple in de data. 
  # In RDF-termen, ?sub staat voor de subjecten, ?pred voor de predicaten, en ?obj voor de objecten.
  ?sub ?pred ?obj .
  
} 

# LIMIT 10: dit geeft aan dat slechts de eerste 10 resultaten moeten worden geretourneerd.
LIMIT 10

1. Tellen van het Aantal Triples in een Graph

Deze SPARQL-query is ontworpen om het totale aantal triples te tellen in een specifieke graph, instanties-rce, gehost op het `https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql endpoint. Het resultaat van deze query is het totale aantal triples in de instanties-rce graph, weergegeven op een manier waarbij duizendtallen worden gescheiden door een punt.

# Definieer het PREFIX graph, dat de URL van de endpoint voorstelt.
PREFIX graph: <https://linkeddata.cultureelerfgoed.nl/graph/>

# SELECT: Begin van de query. We gaan het totale aantal triples tellen, 
# waarbij duizendtallen gescheiden zijn door een punt.
# replace(str(count(*)),'[0-9](?=(?:[0-9]{3})+(?![0-9]))','$0.') 
# gebruikt een regex om een punt toe te voegen voor elk groepje van drie cijfers in het getal, 
# beginnend vanaf het einde. Dit maakt het getal makkelijker te lezen. 
# Het resultaat wordt opgeslagen in de variabele ?aantalTriples.
SELECT (replace(str(count(*)),'[0-9](?=(?:[0-9]{3})+(?![0-9]))','$0.') as ?aantalTriples)  {

  # GRAPH: Specificeer de graph waarin we geïnteresseerd zijn.
  GRAPH graph:instanties-rce {
  
    # Patroon dat elke mogelijke triple in de graph matcht. In RDF-termen,
    # ?s staat voor de subjecten, ?p voor de predicaten, en ?o voor de objecten.
    ?s ?p ?o.
  }
}
  1. Tellen van Verschillende Instanties in de Graph

Deze SPARQL-query is ontworpen om het aantal verschillende instanties te tellen in verschillende categorieën in de instanties-rce graph, gehost op het https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql endpoint.

#+ https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql
# Definieer PREFIXes voor diverse namenruimten die in de query worden gebruikt.
PREFIX graph: <https://linkeddata.cultureelerfgoed.nl/graph/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rn: <https://data.cultureelerfgoed.nl/term/id/rn/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>

# De SELECT-clausule specificeert welke variabelen zullen worden geretourneerd.
# Elk van de geselecteerde variabelen bevat het aantal unieke instanties in de betreffende categorie.
SELECT (COUNT(DISTINCT ?rijksmonument) AS ?Rijksmonumenten)
       (COUNT(DISTINCT ?beschermd) AS ?BeschermdGebouwd)
       (COUNT(DISTINCT ?archeologisch) AS ?BeschermdArcheologisch)
       (COUNT(DISTINCT ?nietbeschermd) AS ?NietBeschermd)
       (COUNT(DISTINCT ?voorbeschermd) AS ?VoorBeschermd)
       (COUNT(DISTINCT ?complex) AS ?Complexen)
       (COUNT(DISTINCT ?rmincomplex) AS ?RMinComplexen)
       (COUNT(DISTINCT ?gezicht) AS ?Gezichten)
       (COUNT(DISTINCT ?werelderfgoed) AS ?Werelderfgoed)
       (COUNT(DISTINCT ?vondst) AS ?Vondsten)
       (COUNT(DISTINCT ?grondspoor) AS ?Grondsporen)
       (COUNT(DISTINCT ?vondstlocatie) AS ?Vondstlocaties)
       (COUNT(DISTINCT ?arch_complex) AS ?Arch_Complexen)
       (COUNT(DISTINCT ?arch_terrein) AS ?Terreinen)
       (COUNT(DISTINCT ?onderzoeksgebied) AS ?Onderzoeksgebied)

# De WHERE-clausule specificeert de voorwaarden waaraan de data moeten voldoen.
WHERE {
# De GRAPH-clausule specificeert de graph waarin we geïnteresseerd zijn.
  GRAPH graph:instanties-rce {
# Elk blok binnen deze haakjes specificeert een type instantie dat we willen tellen.
# UNION wordt gebruikt om meerdere types te tellen in dezelfde query.
    { ?rijksmonument a ceo:Rijksmonument. }
    UNION { ?beschermd a ceo:Rijksmonument ; ceo:heeftJuridischeStatus rn:b2d9a59a-fe1e-4552-9a05-3c2acddff864 .}
    UNION { ?nietbeschermd a ceo:Rijksmonument ; ceo:heeftJuridischeStatus rn:3e79bb7c-b459-4998-a9ed-78d91d069227 .}
    UNION { ?voorbeschermd a ceo:Rijksmonument ; ceo:heeftJuridischeStatus rn:2e93edd1-098f-4f31-ae7e-72cb77f4d2ca .}
    UNION { ?archeologisch a ceo:Rijksmonument ; ceo:heeftJuridischeStatus rn:b2d9a59a-fe1e-4552-9a05-3c2acddff864 ; ceo:heeftMonumentAard rn:b673c8c1-5d93-496d-8f9e-89133d579d77.}
    UNION { ?complex a ceo:Complex. }
    UNION { ?rmincomplex a ceo:Complex. ?rmincomplex ceo:heeftRijksmonument ?rmincomplex_rijksmonument. }
    UNION { ?gezicht a ceo:Gezicht. }
    UNION { ?werelderfgoed a ceo:Werelderfgoed. }
    UNION { ?vondst a ceo:Vondsten. }
    UNION { ?grondspoor a ceo:Grondsporen. }
    UNION { ?vondstlocatie a ceo:Vondstlocatie. }
    UNION { ?arch_complex a ceo:ArcheologischComplex .}
    UNION { ?arch_terrein a ceo:ArcheologischTerrein. }
    UNION { ?onderzoeksgebied a ceo:ArcheologischOnderzoeksgebied. }
  }
}

3. Tellen van het Aantal Instanties per Klasse

Deze SPARQL-query is ontworpen om het aantal instanties te tellen per klasse in een specifieke graph, instanties-rce, gehost op het https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql endpoint.

# Definieer de PREFIX graph, dat de URL van de endpoint voorstelt.
PREFIX graph: <https://linkeddata.cultureelerfgoed.nl/graph/>

# Definieer het prefix "ceo" voor de namespace URI.
prefix ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#> 

# Definieer het prefix "rdfs" voor de namespace URI.
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>  

# SELECT: Begin van de query. We gaan het aantal instanties tellen per klasse,
# waarbij duizendtallen gescheiden zijn door een komma.
# replace(count(?instantie),'[0-9](?=(?:[0-9]{3})+(?![0-9]))','$0,') 
# gebruikt een regex om een komma toe te voegen voor elk groepje van drie cijfers in het getal, 
# beginnend vanaf het einde. Dit maakt het getal makkelijker te lezen. 
# Het resultaat wordt opgeslagen in de variabele ?aantalInstanties.
SELECT ?klasse (replace(count(?instantie),'[0-9](?=(?:[0-9]{3})+(?![0-9]))','$0,') as ?aantalInstanties)  {

  # GRAPH: Specificeer de graph waarin we geïnteresseerd zijn.
  GRAPH graph:instanties-rce {

  # Zoekt naar instanties die behoren tot of ondergeschikt zijn aan een bepaalde klasse.
  ?instantie a/rdfs:subClassOf* ?klasse.

  # Filtert alleen de klassen die zich in de CEO-namespace bevinden.
  filter(strstarts(str(?klasse),str(ceo:))) 
  }}
  
# Groepeert de resultaten op basis van de klasse.
GROUP BY ?klasse 

# Sorteert de resultaten op basis van de klasse.
ORDER BY ?klasse  

Wanneer een klasse geen enkel voorkomen heeft is deze niet opgenomen in deze tabel (zie Sectie 5 voor dit gegeven).

4. Selecteren van Lege Eigenschappen in de CEO Namespace

Deze SPARQL-query is ontworpen om lege eigenschappen (attributen die niet zijn toegewezen aan enige waarde) in de CEO namespace te selecteren vanuit een specifieke SPARQL endpoint: https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql.

# Definieer de PREFIXen ceo, owl en rdfs, die respectievelijk staan voor 
# de CEO namespace, de OWL namespace en de RDFS namespace.
prefix ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

# SELECT: Begin van de query. We gaan lege eigenschappen selecteren die zich 
# in de CEO namespace bevinden.
select distinct ?eigenschap {

  # Er zijn twee soorten eigenschappen: met een datatype of met een object.
  # Hier selecteren we beide soorten.
  { ?eigenschap a owl:DatatypeProperty. } union { ?eigenschap a owl:ObjectProperty. }
  
  # We willen alleen de eigenschappen in de CEO namespace zien. 
  # Dus we filteren de resultaten zodat alleen eigenschappen die beginnen 
  # met de CEO namespace-string worden geselecteerd.
  filter(strstarts(str(?eigenschap),str(ceo:)))
  
  # We zijn alleen geïnteresseerd in eigenschappen die niet worden gebruikt 
  # (ook wel 'lege' eigenschappen genoemd). Dus we filteren de resultaten 
  # zodat alleen eigenschappen die geen subeigenschappen of waarden hebben 
  # worden geselecteerd.
  filter not exists {
    ?eigenschap0 rdfs:subPropertyOf* ?eigenschap.
    [] ?eigenschap0 [].
  }
}

welke properties zijn nog leeg

5. Opvragen van Ongebruikte Klassen uit de CEO Namespace

Deze SPARQL-query is ontworpen om ongebruikte klassen uit de CEO namespace op te vragen, gehost op het https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql endpoint.

# Definieer de PREFIXes, die de URL's van de respectievelijke ontologieën voorstellen.
prefix ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

# SELECT: Begin van de query. We gaan de ongebruikte klassen opvragen.
select distinct ?klasse {

  # Patroon dat alle objecten van het type owl:Class matcht en ze toekent aan ?klasse.
  ?klasse a owl:Class.
  
  # FILTER: We willen alleen klassen die de CEO namespace hebben.
  # strstarts(str(?klasse),str(ceo:)) controleert of de string-representatie van ?klasse 
  # begint met de string-representatie van ceo:.
  filter(strstarts(str(?klasse),str(ceo:)))
  
  # FILTER: Alleen klassen die niet gebruikt worden (zogenaamde 'lege' klassen).
  # not exists { [] a/rdfs:subClassOf* ?klasse. } controleert of er geen instanties of subklassen 
  # van ?klasse bestaan.
  filter not exists { [] a/rdfs:subClassOf* ?klasse. }
}

# ORDER BY: Sorteert de resultaten op basis van ?klasse.
order by ?klasse

Welke klassen zijn nog leeg

6. Tellen van het Aantal Triples per Eigenschap in een Graph

Deze SPARQL-query is ontworpen om het aantal triples te tellen voor elke unieke eigenschap (?eigenschap) in een specifieke graph, instanties-rce, gehost op het https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql endpoint.

# Definieer de PREFIXen die in de query worden gebruikt.
# ceo, graph en rdfs representeren respectievelijk de volgende URL's:
# https://linkeddata.cultureelerfgoed.nl/def/ceo#
# https://linkeddata.cultureelerfgoed.nl/graph/
# http://www.w3.org/2000/01/rdf-schema#
prefix ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>
prefix graph: <https://linkeddata.cultureelerfgoed.nl/graph/>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>

# SELECT: Begin van de query. We tellen het aantal triples voor elke ?eigenschap.
# De regex in replace voegt een komma toe voor elk groepje van drie cijfers in het getal, beginnend vanaf het einde. 
# Dit maakt het getal makkelijker te lezen. Het resultaat wordt opgeslagen in de variabele ?aantalTriples.
select ?eigenschap (replace(count(*),'[0-9](?=(?:[0-9]{3})+(?![0-9]))','$0,') as ?aantalTriples) {

  # GRAPH: Specificeer de graph waarin we geïnteresseerd zijn.
  graph graph:instanties-rce {
  
    # Patroon dat elke mogelijke triple in de graph matcht waarbij ?eigenschap het predicaat vertegenwoordigt.
    [] ?eigenschap [].
  }
  
  # Deze regel is momenteel gecommenteerd. Indien geactiveerd, zal deze regel alle eigenschappen matchen die direct of indirect subeigenschappen zijn van ?eigenschap. 
  # ?eigenschap0 rdfs:subPropertyOf* ?eigenschap.
}

# Group By: De resultaten worden gegroepeerd op basis van ?eigenschap.
group by ?eigenschap

# Order By: De resultaten worden gesorteerd op basis van ?eigenschap.
order by ?eigenschap

7. Tellen en Sorteren van Triples Per Graph en Predicaat

Deze SPARQL-query is ontworpen om triples te tellen die betrekking hebben op objecten van het type ceo:Rijksmonument in elke graph. De triples worden geteld per graph en per predicaat, en vervolgens geordend op basis van het aantal triples in aflopende volgorde.

# Definieer de PREFIXes die in de query worden gebruikt.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>

# Begin van de SELECT-clausule. We gaan het aantal triples tellen per graph en per predicaat.
# Het resultaat wordt opgeslagen in de variabelen ?g, ?pred en ?triples.
SELECT ?g ?pred (COUNT(*) as ?triples) WHERE {

  # Binnen elke GRAPH met een variabele naam ?g...
  GRAPH ?g {
  
    # ...zoek naar subjecten ?s die van het type ceo:Rijksmonument zijn.
    ?s a ceo:Rijksmonument .

    # Zoek ook naar triples waarbij het subject ?s is en het predicaat en object zijn gegeven door ?pred en ?o.
    ?s ?pred ?o .
  }
}

# Groepeer de resultaten per graph en per predicaat.
GROUP BY ?g ?pred 

# Orden de resultaten eerst op graph en vervolgens op het aantal triples in aflopende volgorde.
ORDER BY ?g DESC(?triples)

8. Aantal Unieke Instanties per Klasse in Graph in grafiek

Deze SPARQL-query is ontworpen om voor elke klasse het aantal unieke instanties te tellen. De query wordt uitgevoerd op de SPARQL endpoint https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql.

# PREFIX declaraties: Hier worden PREFIX declaraties gedefinieerd die nuttig zijn om de URL's van de gebruikte vocabulaires te verkorten.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>

# SELECT declaratie: Hier geven we aan welke variabelen we willen selecteren, in dit geval ?class en het aantal unieke instanties van elke klasse (?numberOfInstances).
SELECT ?class (count(distinct ?instance) as ?numberOfInstances) {

  # GRAPH declaratie: We specificeren hier dat we de graph willen verkennen wiens URI we in ?class opslaan.
  GRAPH ?class {
  
    # Hier specificeren we het patroon dat we zoeken: elke instantie (?instance) met een willekeurig predicaat (?p) en een willekeurig object ([]).
    ?instance ?p [].
  }
}
# GROUP BY declaratie: We groeperen de resultaten op basis van de klasse (?class).
GROUP BY ?class

# ORDER BY declaratie: We sorteren de resultaten in aflopende volgorde op basis van het aantal unieke instanties (?numberOfInstances).
ORDER BY DESC(?numberOfInstances)

9. Aantal Verbindingen tussen Verschillende Types van Cultural Heritage Objects (CHO's) aka samenhang

Deze SPARQL-query is ontworpen om het aantal relaties te tellen tussen verschillende types van Cultural Heritage Objects (CHO's) via de bevatObject en ligtInObject relaties op de https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql endpoint.

# Definieer het PREFIX ceo, dat de URL van de vocabulary voorstelt.
prefix ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>

# SELECT: Begin van de query. We gaan het aantal relaties tellen tussen 
# verschillende types van CHO's via de bevatObject en ligtInObject relaties.
select ?CHO_X ?eigenschap ?CHO_Y (count(*) as ?aantal) {

  # Bepaal het type van het eerste object (?x).
  ?x a ?CHO_X.
  
  # Blok dat de bevatObject relatie definieert en telt.
  {
    # Bind de eigenschap 'bevatObject' aan de variabele ?eigenschap.
    bind(ceo:bevatObject as ?eigenschap)
    
    # Zoek alle triples waar ?x de bevatObject relatie heeft met een ander object (?y).
    ?x ?eigenschap ?y.
  } 
  
  # UNION: combineert de resultaten van de vorige block met de resultaten van de volgende.
  union {
  
    # Bind de eigenschap 'ligtInObject' aan de variabele ?eigenschap.
    bind(ceo:ligtInObject as ?eigenschap)
    
    # Zoek alle triples waar ?x de ligtInObject relatie heeft met een ander object (?y).
    ?x ?eigenschap ?y.
  }
  
  # Bepaal het type van het tweede object (?y).
  ?y a ?CHO_Y.
}

# Groepeer de resultaten op basis van het type van het eerste object, de relatie, en het type van het tweede object.
group by ?CHO_X ?eigenschap ?CHO_Y

# Sorteer de resultaten eerst op de relatie, vervolgens op het type van het eerste object, en ten slotte op het type van het tweede object.
order by ?eigenschap ?CHO_X ?CHO_Y

De relatie tussen de ligging van een cultuurhistorisch object met betrekking tot een cultuurhistorisch object.

10. Ophalen van Unieke Rijksmonumentnummers en Bijbehorende Instanties voor geometrie check

Deze SPARQL-query haalt unieke rijksmonumentnummers en hun bijbehorende rijksmonument-instanties op van de endpoint https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql, terwijl degenen met een specifieke juridische status worden uitgesloten. De query genereert ook klikbare URI's voor elk rijksmonumentnummer. De resultaten worden geordend op basis van het rijksmonumentnummer.

# Definieer PREFIXes die gebruikt worden in de query.
PREFIX ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>  
PREFIX geo: <http://www.opengis.net/ont/geosparql#>  
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>  

# SELECT-statement: haal de unieke waarden op voor de variabelen rijksmonumentnummer, rijksmonument en uri.
# URI(CONCAT("https://monumentenregister.cultureelerfgoed.nl/monumenten/", URI(?rijksmonumentnummer))) genereert een klikbare URI voor elk rijksmonumentnummer.
SELECT DISTINCT ?rijksmonumentnummer ?rijksmonument (URI(CONCAT("https://monumentenregister.cultureelerfgoed.nl/monumenten/", ?rijksmonumentnummer)) AS ?uri) WHERE {

  # Haal alle instanties van de ceo:Rijksmonument klasse op.
  ?rijksmonument a ceo:Rijksmonument.

  # OPTIONEEL: Haal de geometrische vorm van het rijksmonument op met behulp van de geo:asWKT eigenschap.
  OPTIONAL { ?rijksmonument ceo:heeftGeometrie/geo:asWKT ?shape }

  # Haal de waarde van de ceo:rijksmonumentnummer eigenschap op voor elk rijksmonument.
  ?rijksmonument ceo:rijksmonumentnummer ?rijksmonumentnummer.

  # Sluit rijksmonumenten uit die de ceo:heeftJuridischeStatus eigenschap hebben met de gegeven URI.
  MINUS {?rijksmonument ceo:heeftJuridischeStatus <https://data.cultureelerfgoed.nl/term/id/rn/3e79bb7c-b459-4998-a9ed-78d91d069227>}

  # Filter rijksmonumenten uit die geen geometrische vorm hebben.
  FILTER (!bound(?shape))
}

# Orden de resultaten op basis van de rijksmonumentnummer variabele.
ORDER BY ?rijksmonumentnummer

Rijksmonumenten (nog) zonder geometrie

11. Voor het controleren van de integriteit van de data

Deze SPARQL query is bedoeld om de integriteit van de data in de dataset te controleren. Het doel is om te controleren op 'dode links' of ongedefinieerde instanties binnen de dataset.

De query wordt uitgevoerd op het volgende SPARQL endpoint: https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql

Query

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>  # Definieert de standaard RDF namespace prefix

SELECT ?s WHERE {  # Begint de SELECT-clausule, we zijn geïnteresseerd in de variabele ?s
  ?s rdf:type ?type .  # Selecteert triples waar ?s het subject is en heeft een rdf:type

  # FILTER NOT EXISTS wordt gebruikt om te controleren of er geen andere triples zijn waar ?s het subject is
  FILTER NOT EXISTS { ?s ?p ?o . FILTER(?p != rdf:type) }  
}

12. Checken OWMS gemeentes bij rijksmonumenten

Deze query is bedoeld om te controleren of alle rijksmonumenten een OWMS gemeente heeft.