Overzicht van onmogelijkheden: verschil tussen versies

Uit Knowledge Graph Kunstenpunt
Ga naar:navigatie, zoeken
Verwijderde inhoud Toegevoegde inhoud
Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
Regel 1: Regel 1:
= Onmogelijkheden =
== Lijstjes via SPARQL voor overzicht, quality assurance en data validatie ==


Sommige zaken zijn onmogelijk volgens de data modellering. Als een item een "Activiteit" is, dan moet die ook een "Activiteit type" hebben, bijvoorbeeld. Hieronder proberen we alle onmogelijkheden op te sommen, er een SPARQL query voor te verzinnen, en op die manier een lijstje krijgen van "foute" items, zodat we die kunnen corrigeren.
=== Overzicht van alle Items van het type Activiteit, met een activiteitstype ===


Een andere aanpak moet ook mogelijk zijn, bv. via SHACL?
PREFIX kp:<https://osloddt.wikibase.cloud/entity/>

PREFIX kpp:<https://osloddt.wikibase.cloud/prop/direct/>
== Overzicht van alle Items van het type Activiteit, met een vrije tekst activiteitstype ==
SELECT ?activiteit ?activiteitLabel ?activiteitType ?activiteitTypeLabel
WHERE {
?activiteit kpp:P1 kp:Q58530.
?activiteit kpp:P13 ?activiteitType.
?activiteitType kpp:P1 kp:Q58531.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}


Toon alle activiteiten zonder activiteit type, maar wel met een een activiteit type (vrij), zodat dat vrije tekst veld gestructureerd kan worden.
Toon alle activiteiten zonder activiteit type, maar wel met een een activiteit type (vrij), zodat dat vrije tekst veld gestructureerd kan worden.
Regel 23: Regel 17:
}
}


=== Overzicht van alle Items van het type Activiteit, zonder een activiteitstype ===
== Overzicht van alle Items van het type Activiteit, zonder enig activiteitstype ==


SELECT ?activiteit ?activiteitLabel ?activiteitType ?activiteitTypeLabel
SELECT ?activiteit ?activiteitLabel ?activiteitType ?activiteitTypeLabel
Regel 32: Regel 26:
}
}


=== Overzicht van Items met een "activiteit type", maar die niet "Is" "Activiteit" hebben ===
== Overzicht van Items met een "activiteit type", maar die niet "Is" "Activiteit" hebben ==


=== Overzicht van alle Actoren, met actor type ===
== Overzicht van alle Actoren, zonder enig actor type ==


PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
Regel 46: Regel 40:
}
}


=== Overzicht van alle Items, zonder "IS" statement ===
== Overzicht van alle Items, zonder "IS" statement ==


=== Overzicht van alle Werken, met werk type ===
== Overzicht van alle Werken, zonder enig werk type ==


PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
Regel 60: Regel 54:
}
}


=== Overzicht van alle Werken, zonder werk type ===
== Overzicht van items die het object zijn van een statement met verb "activiteit type", maar niet "is" "activiteit type" hebben ==

=== Overzicht van alle Activiteit Types ===

SELECT DISTINCT ?item ?itemLabel ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/direct/P1> ?type.
FILTER (?type IN (<http://osloddt.wiki.opencura.com/entity/Q15>)).
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?item ?typeLabel

Toon alle activiteitstypes (vrij) die nog geen relatie hebben waarbij het vrije veld ook een gestructureerd activiteit type heeft

=== Overzicht van alle Actor Types ===

SELECT DISTINCT ?item ?itemLabel ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/direct/P1> ?type.
FILTER (?type IN (<http://osloddt.wiki.opencura.com/entity/Q1428>, <http://osloddt.wiki.opencura.com/entity/Q23>, <http://osloddt.wiki.opencura.com/entity/Q1454>)).
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?item ?typeLabel

Toon alle actor types (vrij) die nog geen relatie hebben waarbij het vrije veld ook een gestructureerd actor type heeft

=== Overzicht van alle Werk types ===

SELECT DISTINCT ?item ?itemLabel ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/direct/P1> ?type.
FILTER (?type IN (<http://osloddt.wiki.opencura.com/entity/Q1496>)).
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?item ?typeLabel

=== Overzicht van alle Rollen ===

SELECT DISTINCT ?item ?itemLabel ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/direct/P1> ?type.
FILTER (?type IN (<http://osloddt.wiki.opencura.com/entity/Q20>)).
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?item ?typeLabel

Rollen kunnen ook vrij gemodelleerd worden. Dan moeten we op zoek naar de objecten van een qualifying statement van de property rol (vrij):

SELECT DISTINCT ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/qualifier/P45> ?type.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?typeLabel

=== Overzicht van alle Plaatsen, per Land ===

SELECT DISTINCT ?item ?itemLabel ?landLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q229>;
<http://osloddt.wiki.opencura.com/prop/direct/P20> ?land.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?landLabel ?itemLabel

=== Overzicht van alle Landen ===

PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
PREFIX kpp:<https://osloddt.wikibase.cloud/prop/direct/>
PREFIX kpprop:<https://osloddt.wikibase.cloud/prop/>
PREFIX kpq:<https://osloddt.wikibase.cloud/prop/qualifier/>
PREFIX kps:<http://osloddt.wikibase/prop/statement/>
SELECT DISTINCT ?item ?itemLabel ?itemTypeLabel ?legacyurlLabel
WHERE {
?item kpp:P1 ?itemType.
?item kpp:P26 ?legacyurl.
?item kpprop:P26 ?legacyurlstatement.
?legacyurlstatement kpq:P27 kp:Q50856.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?itemLabel

=== Overzicht van alle Samenwerkings types ===

Samenwerkingstypes kunnen ook vrij gemodelleerd worden:

=== Overzicht van alle URL types ===

=== Overzicht van alle email types ===

=== Overzicht van alle onderdeel types ===
Waarmee sub/superactiviteiten met elkaar gelinkt worden

=== Overzicht van alle format types ===

=== Overzicht van items die het object zijn van een statement met verb "activiteit type", maar niet "is" "activiteit type" hebben ===


Toon alle activiteiten met een activiteit type, maar het activiteit type is geen "activiteit type" (dit soort van "rogue" activiteit types zouden niet toegelaten mogen zijn):
Toon alle activiteiten met een activiteit type, maar het activiteit type is geen "activiteit type" (dit soort van "rogue" activiteit types zouden niet toegelaten mogen zijn):
Regel 167: Regel 66:
}
}


=== Overzicht van items die het object zijn van een statement met verb "url type", maar niet "is" "url type" hebben ===
== Overzicht van items die het object zijn van een statement met verb "url type", maar niet "is" "url type" hebben ==


=== Overzicht van items die het object zijn van een statement met verb "actor type", maar niet "is" "actor type" hebben ===
== Overzicht van items die het object zijn van een statement met verb "actor type", maar niet "is" "actor type" hebben ==


=== Overzicht van items die het object zijn van een qualifying statement met verb "rol", maar niet "is" "Rol" hebben ===
== Overzicht van items die het object zijn van een qualifying statement met verb "rol", maar niet "is" "Rol" hebben ==


=== Overzicht van alle plaatsen zonder land ===
== Overzicht van alle plaatsen zonder land ==


Overzicht van plaatsen zonder land:
Overzicht van plaatsen zonder land:


=== Actoren met dezelfde naam ===
== Actoren met dezelfde naam ==


Deze lijst kijkt heel naïef naar enkel de labels, maar neemt niet in rekening als er al een disambiguerende description voorzien is.
Deze lijst kijkt heel naïef naar enkel de labels, maar neemt niet in rekening als er al een disambiguerende description voorzien is.
Regel 189: Regel 88:
ORDER BY DESC(?itemLabelCount)
ORDER BY DESC(?itemLabelCount)


=== Plaatsen in hetzelfde land met dezelfde naam ===
== Plaatsen in hetzelfde land met dezelfde naam ==


SELECT ?landLabel ?itemLabel (GROUP_CONCAT(?item) as ?itemURLs) (count(?itemLabel) as ?itemLabelCount) {
SELECT ?landLabel ?itemLabel (GROUP_CONCAT(?item) as ?itemURLs) (count(?itemLabel) as ?itemLabelCount) {
Regel 199: Regel 98:
HAVING (count(?itemLabel) > 1)
HAVING (count(?itemLabel) > 1)


=== Tentoonstellingen zonder "kunstenaars" ===
== Tentoonstellingen zonder "kunstenaars" ==


=== Tentoonstellingen zonder "locatie" ===
== Tentoonstellingen zonder "locatie" ==


=== Groepstentoonstellingen in hetzelfde jaar en in dezelfde locatie, met gelijkaardige titels ===
== Groepstentoonstellingen in hetzelfde jaar en in dezelfde locatie, met gelijkaardige titels ==


=== Groepstentoonstellingen met maar 1 kunstenaar eraan ===
== Groepstentoonstellingen met maar 1 kunstenaar eraan ==


=== Activiteiten van het type "beurs", maar niet op een locatie van het type "Beurs" ===
== Activiteiten van het type "beurs", maar niet op een locatie van het type "Beurs" ==


=== Activiteiten die onder tentoonstellingen vallen, maar niet op een locatie met het type "Tentoonstellingsruimte" ===
== Activiteiten die onder tentoonstellingen vallen, maar niet op een locatie met het type "Tentoonstellingsruimte" ==


=== Podiumvoorstellingen die niet verwijzen naar een podiumproductie ===
== Podiumvoorstellingen die niet verwijzen naar een podiumproductie ==


=== Tracks zonder een "Muziekuitgave" ===
== Tracks zonder een "Muziekuitgave" ==

== Enkele SPARQL truukjes ==

SELECT DISTINCT ?item ?itemLabel ?type ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/P1> ?statement.
?statement <http://osloddt.wiki.opencura.com/prop/statement/P1> <http://osloddt.wiki.opencura.com/entity/Q1>.
?statement <http://osloddt.wiki.opencura.com/prop/qualifier/P13> ?type.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?typeLabel

SELECT DISTINCT ?item ?itemLabel ?type ?typeLabel
WHERE {
?item <http://osloddt.wiki.opencura.com/prop/P1> ?statement.
?statement <http://osloddt.wiki.opencura.com/prop/statement/P1> <http://osloddt.wiki.opencura.com/entity/Q1>.
MINUS { ?statement <http://osloddt.wiki.opencura.com/prop/qualifier/P13> ?type }
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
ORDER BY ?typeLabel

Versie van 22 jun 2023 07:36

Onmogelijkheden

Sommige zaken zijn onmogelijk volgens de data modellering. Als een item een "Activiteit" is, dan moet die ook een "Activiteit type" hebben, bijvoorbeeld. Hieronder proberen we alle onmogelijkheden op te sommen, er een SPARQL query voor te verzinnen, en op die manier een lijstje krijgen van "foute" items, zodat we die kunnen corrigeren.

Een andere aanpak moet ook mogelijk zijn, bv. via SHACL?

Overzicht van alle Items van het type Activiteit, met een vrije tekst activiteitstype

Toon alle activiteiten zonder activiteit type, maar wel met een een activiteit type (vrij), zodat dat vrije tekst veld gestructureerd kan worden.

SELECT ?activiteit ?activiteitLabel ?activiteitType ?activiteitTypeLabel ?activiteitTypeVrijLabel
WHERE {
 ?activiteit <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q1>;
             <http://osloddt.wiki.opencura.com/prop/direct/P49> ?activiteitTypeVrij.
 MINUS { ?activiteit <http://osloddt.wiki.opencura.com/prop/direct/P13> ?activiteitType }.
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}

Overzicht van alle Items van het type Activiteit, zonder enig activiteitstype

SELECT ?activiteit ?activiteitLabel ?activiteitType ?activiteitTypeLabel
WHERE {
 ?activiteit <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q1>.
 MINUS { ?activiteit <http://osloddt.wiki.opencura.com/prop/direct/P13> ?activiteitType }.
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}

Overzicht van Items met een "activiteit type", maar die niet "Is" "Activiteit" hebben

Overzicht van alle Actoren, zonder enig actor type

PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
PREFIX kpp:<https://osloddt.wikibase.cloud/prop/direct/>
SELECT DISTINCT ?actor ?actorLabel ?typeLabel
WHERE {
 ?actor kpp:P1 ?is.
 FILTER (?is IN (kp:Q58543, kp:Q58545)).
 OPTIONAL {?actor kpp:P41 ?type. }.
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}

Overzicht van alle Items, zonder "IS" statement

Overzicht van alle Werken, zonder enig werk type

PREFIX kp:<https://osloddt.wikibase.cloud/entity/>
PREFIX kpp:<https://osloddt.wikibase.cloud/prop/direct/>
SELECT ?work ?workLabel ?typeLabel
WHERE {
?work kpp:P1 kp:Q58528.
?work kpp:P48 ?type.  
?type kpp:P1 kp:Q58529.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}

Overzicht van items die het object zijn van een statement met verb "activiteit type", maar niet "is" "activiteit type" hebben

Toon alle activiteiten met een activiteit type, maar het activiteit type is geen "activiteit type" (dit soort van "rogue" activiteit types zouden niet toegelaten mogen zijn):

SELECT distinct ?activiteitType ?activiteitTypeLabel
WHERE {
 ?activiteit <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q1>.
 ?activiteit <http://osloddt.wiki.opencura.com/prop/direct/P13> ?activiteitType.  
 FILTER NOT EXISTS { ?activiteitType <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q15> }.
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}

Overzicht van items die het object zijn van een statement met verb "url type", maar niet "is" "url type" hebben

Overzicht van items die het object zijn van een statement met verb "actor type", maar niet "is" "actor type" hebben

Overzicht van items die het object zijn van een qualifying statement met verb "rol", maar niet "is" "Rol" hebben

Overzicht van alle plaatsen zonder land

Overzicht van plaatsen zonder land:

Actoren met dezelfde naam

Deze lijst kijkt heel naïef naar enkel de labels, maar neemt niet in rekening als er al een disambiguerende description voorzien is.

SELECT ?itemLabel (GROUP_CONCAT(?item;separator=", ") as ?itemURLs) (count(?itemLabel) as ?itemLabelCount) {
?item <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q1453>.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
GROUP BY ?itemLabel
HAVING (count(?itemLabel) > 1)
ORDER BY DESC(?itemLabelCount)

Plaatsen in hetzelfde land met dezelfde naam

SELECT ?landLabel ?itemLabel (GROUP_CONCAT(?item) as ?itemURLs) (count(?itemLabel) as ?itemLabelCount) {
 ?item <http://osloddt.wiki.opencura.com/prop/direct/P1> <http://osloddt.wiki.opencura.com/entity/Q229>;
       <http://osloddt.wiki.opencura.com/prop/direct/P20> ?land.
 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],nl,en" . }
}
GROUP BY ?landLabel ?itemLabel
HAVING (count(?itemLabel) > 1)

Tentoonstellingen zonder "kunstenaars"

Tentoonstellingen zonder "locatie"

Groepstentoonstellingen in hetzelfde jaar en in dezelfde locatie, met gelijkaardige titels

Groepstentoonstellingen met maar 1 kunstenaar eraan

Activiteiten van het type "beurs", maar niet op een locatie van het type "Beurs"

Activiteiten die onder tentoonstellingen vallen, maar niet op een locatie met het type "Tentoonstellingsruimte"

Podiumvoorstellingen die niet verwijzen naar een podiumproductie

Tracks zonder een "Muziekuitgave"