TheaterEncyclopedie:Ontologie van de TheaterEncyclopedie/Realisatie/Ontwikkeling en testen voor TekstVervangen

Uit TheaterEncyclopedie
Ga naar: navigatie, zoeken

Op deze pagina is de ontwikkeling van de opdrachten voor TekstVervangen (en replaceAll.php) gedocumenteerd. Deze opdrachten maken deel uit van het project voor het bijwerken van de Productiepagina's in het kader van de invoering van de eigenschappen voor Realisatie ter vervanging van categorieën.

Zie ook het plan voor het bijwerken van de productiepagina's en de ACTIEPUNTEN.

Documentatie van TekstVervangen / ReplaceText en replaceAll.php

Benodigde opdrachten

Inventarisatie van benodigde zoek-en-vervangopdrachten

  • Plaatsen van sjabloon:Productiepagina_realisatie op:
    • Op pagina's met sjabloon:Productie
    • Op pagina's met sjabloon:Infobox productie
  • Overnemen van categorie informatie in sjabloon:
    • Category:Producties <producent> : check redundantie infobox (Let op: hier Producties i.p.v. Productie)
      • BESLUIT: deze wordt meegenomen in de omzetting; zie ook deze discussie
    • Category:Premieres <theater> : check redundantie infobox (Let op: categorie:Premiere (zonder "s") komt niet voor)
      • BESLUIT: Deze categorie blijft ongewijzigd (want valt buiten de scope van "realisatie productie"); dubbelingen moet evt. later worden opgelost
    • Categorie:Auteur <naam van persoon>
    • Categorie:Vertaling <naam van persoon>
    • Categorie:Regie <naam van persoon>
    • Categorie:Dramaturgie <naam van persoon>
    • Categorie:Choreografie <naam van persoon>
    • Categorie:Decor <naam van persoon>
    • Categorie:Kostuums <naam van persoon>
    • Categorie:Productie <naam van persoon>
    • Categorie:Fotografie <naam van persoon>
    • Categorie:Licht <naam van persoon>
    • Categorie:Uitvoerende <naam van persoon>
    • Categorie:Muziek <naam van persoon>
    • Categorie:Muzikale leiding <naam van persoon>
    • Categorie:Uitvoering muziek <naam van persoon>
    • Categorie:Dirigent <naam van persoon>
    • Categorie:Instudering <naam van persoon>
    • Categorie:Mimografie <naam van persoon>
    • Categorie:Poppen <naam van persoon>
    • Categorie:Grime <naam van persoon>
    • Categorie:Kapwerk <naam van persoon>
    • Categorie:Audiovisueel ontwerp <naam van persoon>
    • Categorie:Bewerking <naam van persoon>
    • zie ook lijst; op basis van deze lijst zijn de volgende categorieën (en eigenschappen) toegevoegd
    • Categorie:Naar ... van <naam van persoon>
    • Categorie:Arrangementen <naam van persoon>
    • Categorie:Uitvoerende dans <naam van persoon>
    • Categorie:Uitvoerende mime <naam van persoon>
    • Categorie:Presentatie <naam van persoon>
    • Categorie:Uitvoerende spel <naam van persoon>
    • Categorie:Uitvoerende zang <naam van persoon>
    • Categorie:Samenstelling <naam van persoon>
    • Categorie:Uitvoerende stem <naam van persoon>
    • Categorie:Geluid <naam van persoon>
    • Categorie:Liedteksten <naam van persoon>
    • Categorie:Maskers <naam van persoon>
    • Categorie:Uitv. poppenspel <naam van persoon>
    • Categorie:Begeleiding <naam van persoon>
  • Verwijderen van categorie informatie van pagina's (indien sjabloon aanwezig)
    • Category:regie <naam>
    • Category:...
    • ...
    • zie lijst

De lijst zoals die zal worden gebruikt is te vinden in Test:Sjabloon: Productiepagina rij uitvoerenden:

  1. Naam variabele in sjabloon
  2. Eigenschap
  3. Categorienaam


Voorbeelden Zoek-en-vervang opdrachten voor:

Samenstellen van test-set

Het is mogelijk om in https://RegExr.com een serie tests uit te voeren om zoek-patronen te valideren (passed / failed). Hoewel deze test niet garandeert dat de uitkomst (met vervangende tekst) ook correct zal zijn, geeft het wel een goede indicatie of de zoekopdracht correct werkt.

Het lijkt erop dat de test-pagina's gekoppeld zijn aan een enkel Regex-patroon, wat het testen van alle patronen met dezelfde test-set bemoeilijkt (nog uitzoeken).

Op de Inventarisatie pagina is een lijst met ca. veertig willekeurig geselecteerde Productiepagina's te vinden, die als test-set gebruikt kan worden. Transclusie van deze lijst:

  1. Lohengrin - Wagnervereeniging - 1936-05-07: Tinbot,  Tuja van den Berg,  Siang,  Milcof,  ProjectP,  
  2. Cavalleria rusticana - Stichting De Nederlandse Opera - 1951-08-31: Ad Aerts,  Tinbot,  Siang,  Milcof,  ProjectP,  
  3. A Couple Chicks Sitting Around Talking - American Repertory Theatre (Amsterdam) - 1984-08-15: Tinbot,  ProjectP,  
  4. Straatact - Mooi Weer Spelen - 1990-06-10: Tinbot,  Siang,  Milcof,  Keees,  ProjectP,  
  5. Fin de partie - Théâtre d' Aujourd'hui - 1958-06-21: Ad Aerts,  Siang,  Milcof,  ProjectP,  Eva van der Weerd 3,  Willemdekoe,  
  6. Tannhäuser - Nederlandsche Opera - 1901-09-01: Tinbot,  Siang,  AB1938,  Milcof,  ProjectP,  
  7. De troep: deel 2 Doornroosje - Kunstwerf Malschaert Maastricht Sirkel - 1988-01-15: Ad Aerts,  Tinbot,  ProjectP,  
  8. De drie stuivers opera (Drei Groschen Oper) - Oost-Nederlandsch Tooneel - 1929-10-02:
  9. De lach der Goden - N.V. Vereenigd Rotterdamsch-Hofstad Tooneel - 1938-02-11:
  10. Assepoesters Assepesters - Stichting Het Laagland - 2019-03-28: Tinbot,  Siang,  ProjectP,  
  11. Das Land des Lächelns - Deutsches Theater in den Niederlanden - 1943-05-18: Tinbot,  Tuja van den Berg,  Siang,  AB1938,  Milcof,  ProjectP,  
  12. Orpheus - Nederlandsche Opera - 1902-10-14: Tinbot,  Siang,  AB1938,  Milcof,  ProjectP,  
  13. Aida - Hoogduitsche Opera - 1886-09-22: Siang,  AB1938,  Milcof,  ProjectP,  
  14. De appel - Het Ruys Ensemble - 1925-10-21: Tinbot,  AB1938,  ProjectP,  
  15. Me and Stalin - - 2014-01-22: Ad Aerts,  Tinbot,  Milcof,  ProjectP,  
  16. Thaïs - Théâtre Royal Français de la Haye - 1910-10-15: Tinbot,  Siang,  Milcof,  ProjectP,  
  17. De vrouw in Crêpe de Chine! - Gelegenheidscombinaties - 1936-05-23: Tinbot,  AB1938,  ProjectP,  
  18. Carmen - Nationale Opera N.V. - 1920-12-02: Tinbot,  Siang,  Milcof,  ProjectP,  
  19. Exegese_-_Holland_Festival_-_1974-06-20: Ad Aerts,  Tinbot,  Siang,  ProjectP,  Christiannespigt,  
  20. Lalla Rookh - Korzo producties - 2015-02-05: Ad Aerts,  Tinbot,  ProjectP,  
  21. Films en videobanden van stukken van Heiner Müller - Producent onbekend - 1983-05-28: Tinbot,  ProjectP,  
  22. Leef! - SoloǀStories - 2016-01-14: Tinbot,  Tuja van den Berg,  ProjectP,  Christiannespigt,  
  23. Stella - Neil Bartlett - 2016-06-20: Tinbot,  ProjectP,  Christiannespigt,  
  24. De Tovenaar van Oz - Nationaal Jeugd Musical Theater - 2013-10-05: Tuja van den Berg,  AB1938,  Milcof,  ProjectP,  
  25. Suite voor twee dansers - Amsterdams Ballet - 1961-01-05: Tinbot,  Siang,  ProjectP,  
  26. Invasion! - Frascati Producties - 2011-04-14: Tinbot,  Milcof,  ProjectP,  Christiannespigt,  
  27. Tijdgravers - - 2018-12-01: Tinbot,  ProjectP,  
  28. Momentum - Art Buro Limburg - 2009-09-26: Tinbot,  Siang,  ProjectP,  
  29. Son - Akkersenvelden - 2014-02-20: Tuja van den Berg,  AB1938,  ProjectP,  Christiannespigt,  
  30. Als_opa_uit_vissen_gaat_-_Jeugdtheaterfestival_Polanentheater_-_1990-12-29: Tinbot,  Siang,  ProjectP,  
  31. In wankel evenwicht - Stichting Het Hof - 2012-02-04: Tuja van den Berg,  AB1938,  ProjectP,  Eva van der Weerd 3,  Willemdekoe,  Christiannespigt,  
  32. Hollandse luchten III- De radicalisering van Sadettin K. - Frascati Producties - 2015-10-02: Tinbot,  Milcof,  ProjectP,  Christiannespigt,  
  33. Kopenhagen_Culturele_Hoofdstad_van_Europa_-_Warner_&_Consorten_-_1996-09-06: Tinbot,  ProjectP,  
  34. Slingerland_III_-_Holland_Festival_-_1990-06-25: Tinbot,  Siang,  ProjectP,  
  35. Suite voor twee dansers - Amsterdams Ballet - 1961-01-05: Tinbot,  Siang,  ProjectP,  
  36. De troep: deel 2 Doornroosje - Kunstwerf Malschaert Maastricht Sirkel - 1988-01-15: Ad Aerts,  Tinbot,  ProjectP,  
  37. Van hier naar daar - Het Veem Theater - 1995-09-22:
  38. Een echtgenoot, die vacantie neemt! - o.l.v. Van Lier Hollandsch Tooneelgezelschap - 1889-06-13:
  39. Why Are You - De KISS moves - 2015-09-25: Tinbot,  Siang,  ProjectP,  

Track and trace

Om een test-set van pagina's te definiëren is het 't meest praktisch deze pagina's in een categorie te plaatsen. Het plaatsen van deze categorie-toewijzing moet willekeurig zijn, en dit kan eigenlijk alleen handmatig.

  • Bijvoorbeeld: [[Categorie:Testset 1]]
  • Categorie-toewijzing kan geplaatst worden op bovenstaande (40) pagina's
    • Opmerking: Dat is niet handig, want dit zijn pagina's op de productieomgeving van de TE, terwijl ze nodig zijn op Test-TE.
  • Deze test-set kan via test:Speciaal:WillekeurigeUitCategorie/Productie worden aangemaakt/uitgebreid
  • Voor huidige status, zie: test:Categorie:Testset 1

Om het proces van aanpassingen te kunnen volgen en controleren is het nuttig, wanneer aangepaste pagina's een of meer kenmerken krijgen. Al naar gelang de stappen in het proces kunnen deze kenmerken zijn:

  1. Sjabloon:Productiepagina realisatie toegevoegd
  2. Categorieën bijgewerkt
  3. Redundante categorieën verwijderd

De pagina Speciaal:TekstVervangen voorziet niet in het toevoegen van dit soort informatie. Om toch controle over het proces te houden, kunnen de volgende maatregelen worden getroffen:

  1. Toevoegen van wikitekst [[categorie:PR-fase1]] bij het plaatsen van het sjabloon
    1. Eventueel splitsen voor pagina's met sjabloon:infobox productie en het nieuwere sjabloon:productie
  2. Toevoegen van wikitekst [[categorie:PR-fase2]] bij het verplaatsen van de categorieën naar het sjabloon
  3. Toevoegen van wikitekst [[categorie:PR-fase3]] bij het verwijderen van de categorieën uit de vrije tekst

Als extra maatregel kan worden overwogen:

  • Een speciale gebruiker aanmaken voor het doorvoeren van de wijzigingen; daarmee zijn de wijzigingen eenvoudiger uit de edit-log te filteren

Op deze manier kan achteraf bijvoorbeeld gecontroleerd worden of alle pagina's de drie stappen hebben doorlopen en welke pagina's wellicht een stap hebben gemist.

Mogelijk alternatief (nog uitzoeken): edit labels of tags toevoegen: kan dat?


Meervoudig voorkomende rollen - "multiple instances"

Categorieën in het domein van de productierealisatie kunnen meer dan eens voorkomen; het is immers mogelijk dat een rol door meer mensen wordt ingevuld. Met name de "algemene" rol van uitvoerende kan in grote getale voorkomen op een enkele productiepagina:

De twee getallen geven aanL zichtbaar op pagina/zichtbaar in de edit. Het aantal categorietoewijzingen, dat zichtbaar is in de edit-modus, kan groter zijn als het gevolg van dubbelingen.

Het is in principe mogelijk ook deze grote aantallen met zoek-en-vervang om te zetten naar het gewenste formaat. Omdat het slechts een beperkt aantal pagina's betreft is het naar verwachting geen "zware belasting". Dit onder voorbehoud dat de opeenvolgende zoek-en-vervang acties in een script kunnen worden geplaatst. De vraag rijst wel of dit script eventueel dergelijke zoek-en-vervang acties programmatisch zou kunnen afhandelen (bijv. een loop-opdracht).

NB: Het voorkomen van meerdere 'uitvoerenden' binnen één productie is natuurlijk niet iets van beperkte mate. Bij verreweg de meeste producties staat er meer dan één iemand op het toneel (m.u.v. veel cabaret en enkele solovoorstellingen). Bovengenoemde grote aantallen van meer dan 80 mensen zijn wel uitzonderlijk (Milcof (overleg) 5 nov 2020 09:01 (CET))

Opmerkingen:

  • De bovenstaande pagina's zijn opgenomen in de test:Categorie:Testset 1
  • Het overnemen van dubbele categorie-toewijzingen is (natuurlijk) niet zinvol, maar het is ook niet problematisch.

Lijst met pagina's op Test-TE voor proefset

Door Gebruiker:Milcof.
Als het voor de efficiëntie ergens anders geplaatst moet worden, bijv. op de Test-TE zelf, laat het gerust weten. De voorstellingen zijn gecontroleerd d.m.v. ?action=history erachter te typen. Zodra daaruit bleek dat alleen Tinbot de bewerker is, is de voorstelling toegevoegd aan onderstaande lijst. Hieronder alvast een eerste lijst (op dit moment 76 producties); wordt later nog aangevuld.

Vervangingstekst - plaatsen van sjablooninfo

Deze tekst wordt (zowel door tinbot als de regex-zoek-en-vervangopdrachten geplaatst; tinbot plaatst ook veldinhoud):


{{Productie extra info
|gebaseerdop=
|tcs=Nee
}}
{{Productiepagina realisatie
|uitvoerende=
|productie=
|auteur=
|vertaling=
|muziek=
|choreografie=
|decor=
|regie=
|kostuums=
|licht=
|grime=
|kapwerk=
|grimekapwerk=
|audiovisueelontwerp=
|bewerking=
|dirigent=
|dramaturgie=
|fotografie=
|instudering=
|mimografie=
|muzikaleleiding=
|poppen=
|muzikaleuitvoering=
|arrangementen=
|bedachtnaar=
|begeleiding=
|uitvoerendedans=
|uitvoerendemime=
|uitvoerendepoppenspel=
|presentatie=
|uitvoerendespel=
|uitvoerendestem=
|uitvoerendezang=
|samenstelling=
|geluid=
|liedteksten=
|maskers=
|rolverdeling=
}}

NB: Wijzigingen d.d. 19-11-2020

  • parameter "grime" toegevoegd (reeds in sjabloon)
  • parameter "kapwerk" toegevoegd (reeds in sjabloon)
  • parameter "creatives" aangepast in "team" (nog door te voeren in test:sjabloon:productiepagina_realisatie)

NB: Wijziging d.d. 25-11-2020

  • parameter "team" komt te vervallen


Opmerkingen bij het gebruik van het shell script "replaceAll.php"

Regex aanpassingen

Het gebruik van regex in combinatie met het replaceAll.php script vereist enkele aanpassingen:

  • Het gebruik van { of {{ voor het vinden van sjablonen is gewoon mogelijk via de Special:ReplaceTekst, maar niet rechtstreeks via het script:
    • Gebruik in het shell script: \\{\\{ (dubbele escapes!!)
  • Het gebruik van $ is gewoon mogelijk via de Special:ReplaceTekst, maar niet rechtstreeks via het shell script
    • Gebruik in het shell script: \$

Zie ook: deze forum post

Filteren op category

  • Niet in standaard documentatie genoemd...
  • "by-category" genoemd in in version history
  • php replaceAll.php --help checken op meer info

Replacements bestand

Omdat er in dit project veel vervangingsacties nodig zijn, is het waarschijnlijk efficiënt om de verschillende acties in een opdracht-file te verzamelen. Het bestandsformaat is TSV; zie documentatie

Opvragen bestandsformaat:

php replaceAll.php --replacements

Gebruiker toewijzen

Om de wijzingen te kunnen volgen is het praktisch een speciale (bot)-gebruiker toe voegen op zowel de productie- als de test-TE. Aanvulling in LocalSettings.php:

$wgReplaceTextUser = "project";

Uitgevoerde testen voor PR-fase2 (vervangen categorieën)

Als eerste zijn de bovengenoemde "lange pagina's" (pagina's met veel uitvoerenden) onderzocht op verschillen. Bij een aantal pagina's zijn verschillen geconstateerd. De oorzaak hiervan is:

  • 1 verschil op de pagina dev:Romeo en Julia (nieuwe versie) - Het Nationale Ballet - 1974-12-19
    • Afwijking in het aantal uitvoerenden 1 verschil: 220 categorieën; 219 eigenschappen.
      • Extra categorie = dev:Categorie:Uitvoerende_Kerry_Szuch Categorie:Uitvoerende Kerry Szuch. Kerry Szuch is de schrijfwijze bij de rolverdeling. Echter: bij de categorie is ook Categorie:Uitvoerende Kerrie Szuch toegevoegd (met ie ipv y). Deze schrijfwijze is wel als eigenschap te zien.
        • De naamgeving in de "categorie:uitvoerende ...." is leidend en wordt overgezet (naar rolverdeling wordt niet gekeken); Tevens is er een REDIRECT van dev:Kerry Szuch naar dev:Kerrie Szuch en zijn ze semantisch dus identiek (met voorkeur Kerrie Szuch). Dit is dus technisch correct gebeurd.
      • Verder opvallend: Categorie:Uitvoerende Caroline Iura is als eigenschap: Caroline Sayo Iura geworden.
        • Dit is het gevolg van een doorverwijzing (REDIRECT) op de pagina Carolina Iura; SMW ziet dit als een "alias/correct" en pakt automatisch de "doorverwijzing" mee.

--> HB: Kerry Szuch en Kerrie Szuch kunnen technisch gezien 2 verschillende personen zijn. Dus worden ook apart toegevoegd. Als dit een probleem is, moeten we hierover brainstormen.

--> BM:Vanwege de REDIRECT is deze verwijzing ook juist verwerkt. (de naam Kerry is "blijkbaar" niet goed, leid ik af uit de doorverwijzing).

In de broncode is de categorie Caroline Iura ook Caroline Iura in de eigenschap. De vertaling ervan door MediaWiki voor de gebruiker resulteert in de doorverwijzing. Het script doet dit dus goed. Heidib (overleg) 3 mrt 2021 12:19 (CET)

--> In de broncode staan ook voor de eigenschap beide namen. Alleen doet de MediaWiki pagina een doorverwijzing. Zie broncode. Het script voegt beide toe in de eigenschap omdat beide in de categorie voorkomen. In de broncode zijn voor beide 159 unieke resultaten te vinden. Heidib (overleg) 3 mrt 2021 12:27 (CET)

Categorie:uitvoerenden-testen

Als tweede test geldt het controleren van het aantal producties waaraan een persoon heeft gewerkt:

--> Met de spaties was inderdaad geen rekening gehouden. Goed gevonden! Andere leestekens wel, hij zoekt naar alles behalve line breaks (.*) Heidib (overleg) 3 mrt 2021 12:45 (CET) --> Script heeft, aangepast, opnieuw gelopen op deze pagina. Heidib (overleg) 3 mrt 2021 12:59 (CET)

--> Categorieen achter elkaar gescheiden met een komma werkten ook niet zoals zou moeten. Is aangepast en heeft opnieuw gelopen voor deze pagina. Goed gevonden! Heidib (overleg) 3 mrt 2021 15:21 (CET)

--> Beide pagina's hebben opnieuw gerund. Wordt nu wel meegenomen. Heidib (overleg) 3 mrt 2021 15:32 (CET)

--> Alle 4 opnieuw gerund en alles wordt nu goed meegenomen. Heidib (overleg) 3 mrt 2021 15:48 (CET)

--> Beide opnieuw gerund en alles wordt nu goed meegenomen. Heidib (overleg) 3 mrt 2021 15:54 (CET)

--> Beide opnieuw gerund en alles wordt nu goed meegenomen. Heidib (overleg) 3 mrt 2021 16:08 (CET)

--> Laatste opnieuw gerund en alles wordt nu goed meegenomen. Eerste heeft geen sjabloon. Heidib (overleg) 3 mrt 2021 16:11 (CET)

Overige categorie testen

Andere properties dan "IsUitgevoerdDoor":

Categorie:uitvoerenden-testen poging 2 (na herschrijving script a.d.h.v. bovenstaande tests

Alle bovenstaande pagina's gaan goed mee, m.u.v. de pagina's zonder sjabloon:Productie, én m.u.v. de volgende pagina's:

En verder nieuw getest:

Met betrekking tot doorverwijzingen

Semantic MediaWiki ziet pagina's waarop een doorverwijzing staat als "identiek"; zie documentatie.

Bijvoorbeeld, deze beide pagina's verwijzen naar elkaar door en hebben (dus) dezelfde eigenschappen:

Bovendien wordt de doorverwijzing ook als semantische eigenschap weergegeven.

Met betrekking tot pagina's zonder Sjabloon:Productie

Analyse:

  • Doordat (alle OF veel van?) deze pagina's niet zijn ingedeeld in de Categorie:Productie, worden ze niet meegenomen in PR-fase1
  • Doordat er geen regex {{productie ... }} op de pagina's staat, kan ook het Sjabloon:Productie realisatie niet automatisch geplaatst worden (ook niet als de betreffende pagina WEL in de categorie:productie is ingedeeld...).

Conclusies:

  • Opschonen d.m.v. automatisch plaatsen van (leeg?) Sjabloon:Productie lijkt lastig te zijn (kan niet selecteren op Categorie:Productie)
    • BM: Allerlei semantische queries geprobeerd, maar kan dit niet mbv SMW oplossen. Kan ook geen Regex-patroon bedenken, om te zien of er (g)een Sjabloon:Productie (infobox productie) op een pagina staat (waarop bijv. wel een categorie:uitvoerende.* staat).
  • Op dit moment verwijderen van "Categorie:Uitvoerende ..." zorgt voor gegevensverlies!!
    • Filteren op Categorie:Productie en/of Categorie:PR-fase1 (of 2) voorkomt gegevens verlies

Mogelijke procedure om alle productie-pagina's van een sjabloon:Productie te voorzien:

  • Plaats op alle "Categorie:Uitvoerende xyz"-pagina's een "Categorie:Alle uitvoerenden"
  • Plaats op alle pagina's in "Categorie:Alle uitvoerende" een Sjabloon:Productie
    • Ook hier nog op te lossen: filteren op pagina's ZONDER sjabloon:Productie (ter voorkoming dubbelingen...)

Administratie verwerkte pagina's

Nabewerking of Fase 4

  • Productiepagina's waarop geen Sjabloon:Productie of Sjabloon:Infobox_productie - mogelijk herkenbaar aan de titel met twee liggende streepjes
  • Categorie-toewijzingen die zijn gemist bij het verplaatsten in fase 2:
    • Als gevolg van syntax-fouten (ontbrekende vierkante haken)
    • Als gevolg van spellingsvariaties in de categorie-benamingen (uitvoerden ipv uitvoerende bijv.)

Alle opdrachten

Algemene aandachtspunten bij samenstelling van Regex-patronen

  • Het gebruik van hoofdletters als eerste letter van categorie- of sjabloon-benaming
  • Het gebruik van spaties en underscores in sjabloon- en categorie-namen
  • Aanwezige redundantie spaties op diverse plekken
    • Binnen categorie-toewijzingen
    • Binnen Sjablonen
  • Aanwezige redundante regeleinden binnen (tussen definities variabele)

Voorbeelden:

  • Categorie vs. categorie en {{Infobox productie| ... }} vs. {{infobox productie|...}}
  • [[Categorie:Uitvoerende persoon]] == [[ category : uitvoerende_persoon ]]
{{Infobox productie
| uitvoerende = persoon
}}

{{ infobox_productie
 |uitvoerende=persoon}}

{{infobox productie |uitvoerende =   persoon }}

Bug:

Plaatsen van "Sjabloon:Productiepagina realisatie" onder de "Sjabloon:Productie"

zoek: ({{(\s)*.*(P|p)roductie(\s)*(.*\n)*}})        <!-- getest met TekstVervangen: mist 5 pagina's in de testset 1; MassRegexEdit vindt wel alle pagina's -->
zoek: ({{(\s)*.*(P|p)roductie(\s)*(.*\n){0,20}}})   <!-- getest en vindt alle pagina's in de testset 1 -->

vervang: $1\n{{productiepagina_realisatie\n| veld1 = \n| veld2 = \n}}

CLI command: 
versie 1:  php replaceAll.php "(\\{\\{(\s)*.*(P|p)roductie(\s)*(.*\n){0,20}}})" "\$1\n{{productiepagina_realisatie\n| veld1 = \n| veld2 = \n}}" --regex --ns "0" --user "project" --summary "plaatsen sjabloon" --dryrun --debug

Regex.com: https://regexr.com/5d03n

Benodigde verbeteringen en aanpassingen:

  • Hoofdletter gevoeligheid zoekopdracht "productie" - Aangepast. Bmulckhu (overleg) 29 sep 2020 09:37 (CEST)
  • Completeren vervangende tekst voor Sjabloon:Productiepagina_realisatie; Mogelijk met variabele?
  • Filteren op pagina's waarop al een sjabloon:Productiepagina_realisatie is opgenomen.
  • Aanvullen met extra Sjabloon:Productie_extra_info (t.b.v. Oorspronkelijk werk / TCS)

Testresulatien:

Extra test - niet gevonden pagina's in test-set

  • Zoeken op bovengenoemde regexpatroon
  • Vervangen door $1\n[[categorie:vlag 1]]
  • M.b.v. inline query selecteren
    • Pagina's in de test:categorie:Testset 1
    • EN niet in categorie:vlag 1
    • NB: Deze test kan niet uitgevoerd worden met SMW!

(Zoeken naar) oplossing voor niet gevonden pagina

  • De volgende zoekopdracht (met een afgepast aantal newlines 11-12-... ) vindt de betreffende pagina's WEL!
    • Zit er een probleem in de herhaling van het zoekpatroon (.*)\n in de oorspronkelijke zoekopdracht???????????
    • Hiermee is mijn veronderstelling dat het probleem mogelijk wordt veroorzaakt door gebruik van ronde haken (...) blijkbaar NIET WAAR....
Zoek: {{Productie\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n}} werkt wel
\{\{Productie\n(.*\n){11}\}\} werkt ook (escapes niet noodzakelijk)
\{\{Productie\n(.*\n){0,20}\}\} en deze ook
{{Productie\n((.*)\n)*}} werkt NIET op mediawiki
{{Productie\n(.*\n)*}} werkt NIET op mediawiki

OPLOSSING: Onderdeel (.*\n)* vervangen door (.*\n){0,20}

Vermoeden: "nesting" van "*" (willekeurig aantal)_parameter werkt niet goed in Speciaal:Tekstvervangen

Plaatsen van "Sjabloon:Productiepagina realisatie" onder de "Sjabloon:Infobox productie"

zoek: ({{(\s)*.*(I|i)nfobox(\s|_)productie(\s)*(.*\n)*}}) 

vervang: $1\n{{productiepagina_realisatie\n| veld1 = \n| veld2 = \n}}

CLI command: IDEM als boven

Regex.com:

Benodigde verbeteringen en aanpassingen:

  • Uitzoeken welke pagina's nog gemist worden door de regex
    • Methode: plaats een speciale categorie op de pagina, wanneer hij wel wordt gevonden en de tekst wordt vervangen; bijv.: [[categorie:verwerkt 1]]

Testresulatien:

  • Getest op Regexr.com met tekst: OK
  • Getest op Regexr.com met enkele TE-pagina's: OK
  • Getest in Test-TE (Bmulckhu (overleg) 10 nov 2020 10:48 (CET))
    • Resultaat: 1 gevonden pagina (correct)
    • Er blijven 101 - 95 - 1 = 5 pagina's over uit deze en vorige test, die niet geselecteerd worden
    • Zie test:Categorie:Probleem_1

Verplaatsen van "Categorie:uitvoerende ..."

Eerste voorbeeld

zoek: ^((.*\n)*)({{.*Productiepagina realisatie.*\n)(\|uitvoerende)=(.+)((\n(.*))*)(categorie:uitvoerende )(.+)

vervang: $1$3$4=$5;$10$6

CLI command: 

RegExr.com: https://regexr.com/58dub

Benodigde verbeteringen en aanpassingen:

  • Hoofdletter- en taal-ongevoelig maken van diverse onderdelen; Gedeeltelijk aangepast Bmulckhu (overleg) 29 sep 2020 11:45 (CEST)
  • Aanpassen voor andere velden dan "uitvoerende" in sjabloon; Zie versie 3 Bmulckhu (overleg) 29 sep 2020 11:45 (CEST)
  • Aanpassen voor meervoudig repeterend gebruik van de categorie: Zie versie 3 Bmulckhu (overleg) 29 sep 2020 11:45 (CEST)


Testresulatien:

  • Nog niet compleet getest op Regexr.com
    • Controleren of het gebruik van vierkante haken om categorietoewijzing correct werkt; Werk in nieuwe versie OK Bmulckhu (overleg) 29 sep 2020 11:45 (CEST)
  • Nog niet getest in Test-TE

Versie 3

zoek: ^((?:.*\n)*)({{.*Productiepagina realisatie.*\n)(.*\n)(\|uitvoerende)=(.+)((\n(.*))*)}}(\n(?:((?!\[\[(?:c|C)ategor(?:y|ie)).)*))*((\[\[categorie.*\n){3})(\[\[Categorie:uitvoerende (.*)\]\])

vervang: $1$2$3$4=$5;$14$6}}

CLI command: 

Regexr.com: https://regexr.com/5d0ar

Benodigde verbeteringen en aanpassingen:

Testresulatien:

  • Beperkt getest op Regexr.com

Voorbeeld met test:Speciaal:BulkRegexBewerken

Zoek: /^((?:.*\n)*)({{.*Productiepagina realisatie.*\n)((?:.*\n)*)(.*productie=.*)((?:.*\n)*?)((\[\[Category:Uitvoerende\s.*\]\].*\n){3})\[\[Category:Uitvoerende\s(.*)\]\]/

Vervang: $1$2$3$4$8$5$6[[Category:Uitvoerende $8]]

$1: Willekeurige tekstregels
$2: Sjabloon Productiepagina realisatie, incl. newline
$3: Willekeurige tekstregels
$4: Regel met parameter “productie=“ incl. vervolgtekst
$5: Willekeurige tekstregels (non-greedy)
$6: 3 x Patroon: “[[Category:Uitvoerende xyz]]“ (incl. evt. vervolgtekst en/of newline)
NB: $7: bevat de laatste van het herhaalde patroon
  : [[Category:Uitvoerende (met spatie, letterlijke tekst)
$8: Tekst achter voorgaande (tot aan sluithaken) == de verplaatsen naam
]] (Sluithaken)

  • NB: In het voorbeeld staan de parameter "productie" en de "categorie:uitvoerende" door elkaar...
  • Uitgegaan van categorieën in een lijst onder elkaar (is dat altijd zo??? werkt het ook wanneer categorieën achter elkaar staan? andere categorieën ertussen??)

Zoekresultaten met Speciaal:TekstVervangen (uitgevoerd op 95 van de 101 pagina's in testset 1; niet overal staat sjabloon:productiepagina_realisatie!):

  • Met 0 voorlopende categorieën: 76 pagina's
  • Met 1 voorlopende categorieën: 62 pagina's
  • Met 2 voorlopende categorieën: 48 pagina's
  • Met 3 voorlopende categorieën: 43 pagina's
  • Met 15 : 7 pagina's
  • Met 23 : 1 pagina
  • Met 24 : 0 pagina's

Kan niet semantisch controleren of deze getallen kloppen...

Tellen van te verwerken pagina's

Vraag: Is het van tevoren mogelijk exact het aantal te verwerken pagina's te bepalen?

Het is helaas niet zo dat alle voorkomende Categorie:Uitvoerende ... ingedeeld zijn als sub-categorie van Categorie:Uitvoerenden. Dan was het heel simpel geweest.

NB: Ook dan is de vraag wat precies je telt: pagina's in de categorie:Uitvoerende =/= aantal categorie-toewijzingen aan categorie:uitvoerde_* gezien dubbele toewijzingen...

MOGELIJK ALTERNATIEF:

Gebruiken van wildcards in semantische queries, zou hiervoor een oplossing kunnen bieden

{{#ask:[[Categorie:~Uitvoerende*
| format=count
}}

NB: Dit werkt niet, want het lijkt/is niet toegestaan om wildcards in een categorie te plaatsen (alleen in properties).

Andere result-formats lijken geen oplossing te bieden.

Verwijderen van (verplaatste) categorieën

Eenvoudige Regex om alle categorieën met Uitvoerenden te verwijderen:

Zoek: /(\[\[Category:Uitvoerende\s.*\]\]\n?)/
Vervang: <niets>

Opmerkingen:

  • Kijk uit bij voorkomende [[Categorie:Uitvoerende muziek ....]]
  • Spellingsvarianten van categorie moeten ook gevonden worden
  • Hoofdletter Uitvoerende optioneel
  • Eventueel spaties na openingshaken en voor of na dubbele punt

Specifiek aantal occurrences van categorie verwijderen

Omdat sommige categorieën veelvuldig voorkomen, is het denkbaar dat niet alle occurrences van een categorie zijn overgezet naar het sjabloon. Stel er zijn maximaal 25 occurrences overgezet naar het sjabloon, dan kunnen ook alleen de eerste 25 occurences van de categorie verwijderd worden.

Logica:

  • Verwijder 1 tot 25 categorieën die aan het regelpatroon voldoen
  • Het patroon mag niet herhaald op een pagina worden toegepast
  • Er mag niet nog een zelfde categorie aan voorafgaan (!)

De laatste voorwaarde vergt een regex "look behind"; daarin kan geen regex-patroon worden opgenomen....

Deze verwijderde de LAATSTE drie occurrences:

Zoek: /(\[\[Category:Uitvoerende\s.*\]\]\n){1,3}(?!(\[\[Category:Uitvoerende\s.*\]\]\n))/


Alternatief is herhaald toepassen van regex om slechts de eerste match te verwijderen.

  • Geen global search (/g) ?