TheaterEncyclopedie:Concepten

Uit TheaterEncyclopedie
Ga naar: navigatie, zoeken

Semantic MediaWiki maakt het mogelijk om met concepten te werken. Een semantisch concept is goed vergelijkbaar met de (standaard) MediaWiki categorie. Het verschil zit hem in het feit dat een MediaWiki-categorie statisch wordt samengesteld door het plaatsen van een categorie-verwijzing op een pagina, terwijl een semantisch concept dynamisch werkt op basis van een semantische query. Deze concepten (d.w.z. de uitkomst van queries) kunnen ge-cached worden (tijdelijk opgeslagen), om zo de uitvoering en weergave van wikipagina's te versnellen (van belang voor SEO). Er is voor deze concepten standaard een specifieke naamruimte met het voorvoegsel "Concept:..." beschikbaar op de TE.

Mogelijkheden en voorbeelden

Semantic MediaWiki werkt in principe goed zonder gebruikt te maken van concepten; tot nu toe (2021) zijn er ook nog geen semantische concepten gedefinieerd op de TE. Het gebruik van semantische inline queries (zoekopdrachten op wiki-pagina's) neemt toe, en daarmee neemt in sommige gevallen de laadtijd van de betreffende pagina's toe. Concepten kunnen deze queries vereenvoudigen en "caching" van concepten brengt de laadtijd weer omlaag.

Voorbeeld: Theaterproducties uit Leiden

Stel, je wilt op de pagina Leiden een overzicht plaatsen van theaterproducties, die in première zijn gegaan in deze plaats. Omdat er geen Categorie:Premières in Leiden bestaat, zul je dit overzicht samenstellen met een semantische query. Deze query "werkt" als volgt:

  1. Selecteer alle (80.000+ !!) pagina's uit de Categorie:Productie
  2. Bekijken van elke pagina of de waarde van de Eigenschap:Plaats overeenkomt met "Leiden"
  3. Als dat het geval is: geef de pagina-titel weer in het overzicht

In het geval van grotere datasets, zoals dus de Categorie:Productie, neemt het doorlopen van alle pagina-eigenschappen enige tijd in beslag. Dit veroorzaakt een langere laadtijd van de pagina.

Door het opslaan (en cachen) van bovengenoemde query op -bijvoorbeeld- de pagina Concept:Premières in Leiden", hoeft het doorzoeken niet steeds opnieuw uitgevoerd te worden en kan de TE het resultaat wèl snel weergegeven.

Meer mogelijkheden...

Behalve het samenstellen van semantisch bepaalde "subcategorieën", biedt het semantische concept nog een paar extra mogelijkheden:

  1. Behalve de titel van de pagina, kunnen ook extra semantische eigenschappen worden meegenomen. Denk in die voorbeeld aan de Eigenschap:Premieredatum of de Eigenschap:Locatie.
  2. Concepten kunnen opnieuw gebruikt worden bij het samenstellen van weer andere concepten ("nesting"). Zo zou je kunnen denken aan het "Concept:Producties uit de 20e eeuw" en het "Concept:Regisseurs van producties uit de 20e eeuw" en vervolgens het "Concept:Regisseurs van producties uit de 20e eeuw die in Leiden in première zijn gegaan".
  3. Het "aanvullen" met gegevens uit externe bestanden zoals Wikidata en Adlib (?) - Nader te onderzoeken
  4. Het specifiek voor een concept bepalen van een passende "caching-strategie"; bijv. "dagelijks", "wekelijks", "ouder dan een bepaalde periode". Zie de documentatie voor Concept caching.

Ontwerp

Gezien de vele mogelijkheden en de benodigde inspanning om de concepten te ontwikkelen is het van belang om het ontwerp van tevoren in ieder geval op hoofdlijnen voor ogen te hebben.

De aanleiding voor het introduceren van concepten is in eerste instantie de problematische laadtijd van plaatspagina's die ontwikkeld worden op de Test-TE. Het voorstel is om dit onderwerp als een "Proof of Concept" te behandelen en zo te testen óf en zo ja op welke manier met het gebruik van concepten de laadtijd verbeterd kan worden.

NB: Het valt op de laadtijd verbetert, wanneer de pagina's achtereenvolgend worden opgevraagd. Vooral de laadtijd van de eerste weergave is geheel onacceptabel, maar ook latere weergaven hebben een veel te hoge responsietijd.

Gebruikte queries op plaatspagina's

De queries, die op de plaats-pagina staan:

Alle personen die zijn geboren in een plaats:

{{#ask: [[categorie:persoon]] [[geboorteplaats::<<plaatsnaam>>]]
| ?Geboortedatum
| ?Beroep
|...
}}

Alle afbeeldingen met personen uit een plaats:

{{#ask: [[categorie:persoon]] [[geboorteplaats::<<plaatsnaam>>]]
 [[Afbeelding::!Bestand:Unknown.png]]
 [[Afbeelding::!Bestand:Someone.gif]]
 [[Afbeelding::+]]
 |?Afbeelding
 |...
}}


Alle premieres in een plaats:

{{#ask:[[categorie:productie]] [[locatie.plaats::<<plaatsnaam>>]] 
| ?locatie 
| ?premieredatum=Premièredatum 
| ...
}}

Alle theaters (locaties) en alle afbeeldingen van theaters in deze plaats

{{#ask: [[categorie:locatie]] [[plaats::<<plaats>>]]
| ?Type
| ...
}}

{{#ask: [[categorie:locatie]] [[plaats::<<plaats>>]]
 [[Afbeelding::!Bestand:Unknown.png]]
 [[Afbeelding::!Bestand:Someone.gif]]
 [[Afbeelding::+]]
 |?Afbeelding
 |...
}}

Concepten voor plaatspagina's - eerste ontwerp

De volgende concepten zijn in eerste instantie noodzakelijk om de queries op de betreffende plaatspagina's te faciliteren:

  1. Concept:Personen uit <<plaatsnaam>>
    • Geboortedatum
    • Beroep
    • Afbeelding
  2. Concept:Premieres in <<plaatsnaam>>
    • Locatie
    • Premieredatum
  3. Concept:Locaties in <<plaatsnaam>>
    • Type
    • Afbeelding
Tabel: Testen van concepten
Plaats Persoon Productie Locatie
Amsterdam test:Concept:Personen uit Amsterdam en Concept:Persoon uit Amsterdam test:Concept:Premieres in Amsterdam en Concept:Premiere in Amsterdam test:Concept:Locaties in Amsterdam en Concept:Locatie in Amsterdam
Utrecht test:Concept:Personen uit Utrecht test:Concept:Premieres in Utrecht test:Concept:Locaties in Utrecht
Leiden test:Concept:Personen uit Leiden test:Concept:Premieres in Leiden test:Concept:Locaties in Leiden

Naamgeving

Om een consistente naamgeving (vergelijkbaar met categorieën) te krijgen is de voorgestelde naamgeving als volgt:

Concepten:

  • Concept:Persoon in <<plaatsnaam>>; "Persoon" dus in enkelvoud
  • Concept:Premiere in <<plaatsnaam>>; idem en zonder accentgebruik
  • Concept:Locatie in <<plaatsnaam>>

NB: Als gevolg van de naamaanpassing, moet ook de wikitekst nog aangepast worden, om goed te functioneren (BM: done).

Om te drie concepten eenvoudig(er) onderhoudbaar (en kopieerbaar) te maken kunnen ze in een sjabloon worden opgenomen (NB: Alleen uitgevoerd voor Productie-TE en niet op Test):

Aangepaste queries op plaatsnamen

Alle personen die zijn geboren in een plaats:

{{#ask: [[Concept:Personen uit <<plaatsnaam>>]]
| ?Geboortedatum
| ?Beroep
|...
}}

Alle afbeeldingen met personen uit een plaats:

{{#ask: [[Concept:Personen uit <<plaatsnaam>>]]
 [[Afbeelding::!Bestand:Unknown.png]]
 [[Afbeelding::!Bestand:Someone.gif]]
 [[Afbeelding::+]]
 |?Afbeelding
 |...
}}


Alle premieres in een plaats:

{{#ask:[[Concept:Premieres in <<plaatsnaam>>]] 
| ?locatie 
| ?premieredatum=Premièredatum 
| ...
}}

Alle theaters (locaties) en alle afbeeldingen van theaters in deze plaats

{{#ask: [[Concept:Locaties in <<plaats>>]]
| ?Type
| ...
}}

{{#ask: [[Concept:Locatie in <<plaats>>]]
 [[Afbeelding::!Bestand:Unknown.png]]
 [[Afbeelding::!Bestand:Someone.gif]]
 [[Afbeelding::+]]
 |?Afbeelding
 |...
}}

Resultaten

Testpagina: https://test.theaterencyclopedie.nl/wiki/TheaterEncyclopedie:Plaatspagina%27s/Sjablonen

Gemeten laadtijden (eerste bezoek van de pagina, voor niet ingelogde gebruiker):

  • BM: 5 seconden (nog niet fantastisch...) nogmaals geladen in andere browser (anoniem): minder dan 1 seconde (wel fantastisch).

To do:

  • Nog een aantal testen uit te voeren...!!!
  • Verder verbeteren door caching in te regelen (cron job met dagelijks update lijkt me voldoende)