2021 - Week 19

A new procedure this way comes!

Most of the week was spent prodding at the pipes for our new procedure, the catchily titled ‘Published drafts under the European Union (Withdrawal) Act 2018’. This imposes an additional duty on a Minister wishing to amend or revoke subordinate legislation under section 2(2) of the European Communities Act 1972, with a new procedural hoop set out - somewhat sketchily - in paragraph 14 of schedule 8 of the European Union (Withdrawal) Act 2018 . And we also have new duties: updating the legislation model to describe such things, mapping what little is known of the procedure and adapting the software to cope with all of this.

By the end of the week, Librarian Jayne and Michael had ticked off both flavours of procedure map. Meaning we have an old style map using ‘route types’, and a much lovelier and more logical map based on ‘step types’. Colleagues in Software Engineering are currently working through a number of enhancements to the statutory instrument service and, until this work is done, we remain blocked on adding the route type procedure to our live environment. Whilst we wait for that, the step type map has been entered into our staging environment and the machines have, once again, been kind enough to attempt to draw it for us. The machines just get cleverer and cleverer. We intended to check our data input on Friday but unfortunately - or fortunately - or unfortunately by Saturday - a trip to the pub intervened. So that one will have to wait.

Procedure maps and data complete - or as complete as they’re likely to be for a while - Jayne and Michael were joined by Anya and young Robert, and together they set off on a mission to add the verbosely named new paper types to our legislation model. They ended up inadvertently and without prior intent rewriting a fair bit of it. What was a class of statutory enabled thing is now merely enabled thing - the precise definition of statutory escaping us. It features a brand new preceded by property, allowing for SIs to be preceded by both proposed negative statutory instruments and our new, lengthily named published drafts. A new class has been added for enabling things. For now it’s just a superclass of Act of Parliament, but in the future we intend to use it as a superclass for other things that delegate powers - such as Church Measures or even delegated legislation which, whilst always delegated to, might, on occasion, also be delegated from. In such cases, being both enabled and enabling. The enabling power and duty classes, gifted to us by John, have moved off the Act class and onto this new enabling thing thing. And the enabled by property now points at the enabling thing. Obviously. Oh, and we added a new class for published drafts under the EUWA as yet another subclass of enabled thing. Which was where we started.

A selection of the usual Twitter suspects were approached with a plea to check our work. We think the shape of the model is fine but Matthew has questioned some of our language. Kindly as ever, he’s offered to meet us next week to chat through options. Thanks Matthew.

With so many changes afoot, Librarian Jayne has rewritten some of the SPARQL queries used by the website. And contacted colleagues in Software Engineering to share both queries and details of our updates.

Meanwhile, Librarians Anya, Jayne and Claire have been fettling our search and indexing triplestore and Solr endpoint to safely ingest the ministerial letters - now arriving as unnumbered Command Papers - that inform Parliament a new published draft under the blahblahblah has been published. As a draft. Obviously. Which, we’re pretty confident, should allow our Jianhan to grab laid letters from Solr and poke them in the general direction of the procedure database.

On the subject of poor Jianhan, he’s had a terrible week. For reasons unknown -‘Javascript’ has been muttered - the procedure editor interface has been refusing to delete things. Except, rather weirdly, on Michael’s machine. Which is possibly the first time anything has ever worked on his machine that did not work elsewhere. The reverse normally being the case. Given the number of mistakes we tend to make, not being able to delete things is clearly problematic. So Jianhan spent the first half of the week battling Javascript. Which is not a fate one would wish on anyone. The bug proved elusive but a workaround has been added and our team of crack librarians can once again delete things.

Free at last, Jianhan joined us on our death march up published draft mountain and is currently adding new tables to the procedure database and new code to the procedure editor. With a fair wind it’s more than possible we might have our bit of published draft thingies done by next week. Any earlier and we might even sneak in a new Twitter bot.

Logical procedure mapping

Jayne and Michael continued to chip away at the dog’s dinner of treaty procedure mapping. There is still no actual logical treaty map but component maps for the International Trade Committee, the Joint Committee on Human Rights, the Environment, Food and Rural Affairs Committee and the International Agreements Committee have all been drawn up and most of the data entered. Which should mean, once we start on the treaty map proper, we’ll have all our lego bricks sorted and organised.

Parsing procedure maps

What can we say? It is finished. Young Robert and Michael spent a wee while longer adding comments. And because they’re professionals they wrote them in Markdown. And because they believe quite vehemently that it is important to show one’s workings, the comments have been parsed into HTML and yet more Markdown. If you’ve ever wondered how one might parse a work package for an instrument subject to a logically mapped parliamentary procedure, taking account of what has happened to determine what might, should and should not happen next, click that link and fill your boots. It is, to the best of our knowledge, the first time anyone has parsed a logically mapped, machine readable parliamentary procedure. We can only assume that other people had better things to do.

As mentioned last week we did get a little stuck on a SQL query that needed two inner joins, a group by and not one, not two, not three, but four left joins. A cry went out on Twitter and Twitter responded. We’d like to thank Rhys, Ben, John, James and particularly Colin for pointing our noses in the right direction.


Anya continued to find herself mired in a long running email thread about whether papers laid during a prorogation period should be considered laid into the preceding session or the following one. An email was dispatched to David and Paul in search of old heads on young shoulders. Paul responded with a call to pragmatism. David pointed out that - at least until the Fixed-term Parliaments Act 2011 came along - it was quite common for a prorogation period to lead directly into a dissolution. So, whilst we can always guarantee a prorogation will be preceded by a session, we can’t guarantee that a prorogation will be followed by a session. Now we would be the first to recognise that our semantic web pedantry can be of a different flavour to the more clerkly alternative, it does feel like “preceding session” is the only viable answer here. We await confirmation.


Anya, Robert and Michael once more met with Oli to chat through all things elections, candidates and constituencies. Which is always a pleasure. A picture of the candidate database was sketched which Anya, Robert and Michael have now half stitched into our more relational efforts. For now, it’s only there in pixels. SQL and design notes to follow shortly.

So we went to the pub

In years past this would have been less than remarkable. We have visited many pubs on countless occasions and never had much cause to regret it. He types, through half-open and remarkably red eyes. But, in recent months our pub skills have had cause to suffer. So it is of note that on Friday, Anya, young Robert and Michael were joined by boss brarian Bryn and our Dan for pints and chummer that took in Hansard, statements, claims, Wikidata and all things fact checking. Michael, being drunk, went off on a rant about why organisations need to be more porous. Dan seemed to agree and had a half-formed plan for co-working across the, erm, civic tech space. Michael would like to apologise for getting drunk and ranting but also alert our reader to more rantings on a similar subject here.