Workshop 1: ONSTAGE, ECARTICO and the Panpoëticon Batavûm

Team members: Judith Brouwer, Lieke van Deisen, Marleen Puyenbroek, Jan Sengers, Ton van Strien, Leon van Wissen

During this datasprint, an experimental version of the Schrijverskabinet in RDF was used (version 0.1 on GitHub: https://github.com/LvanWissen/schrijverskabinet-rdf/releases/tag/0.1). It could be that queries listed below don't work anymore when the data or data model has changed in future versions.

Introduction

The Panpoëticon Batavûm is a collection of small portraits of Dutch poets (and writers in general). The collection was set up at the beginning of the eighteenth century by the painter Arnoud Halen (1673-1732). As a collection the Panpoëticon is no longer intact, but fortunately researchers at Radboud University have made a beautiful digital reconstruction, which can be seen at the website of the Schrijverskabinet. By connecting this digital Panpoeticon to the datasets mentioned above, we can start asking questions such as:

  • To what extent were the authors of popular pieces in the Amsterdam Theatre included in the Panpoeticon?
  • What was the geographical distribution of the poets included in the Panpoeticon?

Approach

We started off by getting to know the data and its dataformat more, in order to investigate what type of queries and questions we could ask from the SPARQL-endpoint. Since the conversion to a RDF-dataset was still experimental, it is a first step to see which fields from the www.schrijverskabinet.nl website were correctly transfered to an RDF-property and which were not. Essential for linking our dataset to other datasets, such as ECARTICO or ONSTAGE is the link to an external dataset, which is present in the Panpoëticon Dataset in the form of a owl:sameAs statement to the dbnl authors thesaurus of the Koninklijke Bibliotheek (see: http://data.bibliotheken.nl/doc/dataset/dbnla).

At the time of writing, we discovered that there were no owl:sameAs statements for 29 of the entries in the Panpoëticon. The query below asks for every entity of a type schema:Person. To filter out the researchers that have contributed towards articles on persons from the Poëticon, we specify that the entity has to be the main entity of another entity, in this case a not specified scholarly article.


PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?person ?label ?description WHERE {
  ?person a schema:Person ;
        schema:name ?label ;
      schema:disambiguatingDescription ?description ;
      schema:mainEntityOfPage ?page .

  FILTER NOT EXISTS {?person owl:sameAs ?dbnl . }

}

Try it!

Plot birthPlaces on a map!

The next step would be to involve another dataset, in this case ECARTICO. This dataset is loaded in the same SPARQL-endpoint and we know that all authors listed in the Poëticon are also listed in ECARTICO.

In the query below, we try to fetch the birthPlaces of persons included in the Poëticon, including coordinates. The owl:sameAs property links the two datsets together, through a shared external node (i.e. the DBNL author URI). Coordinates are already included in ECARTICO (though external links to Geonames and the Getty's TGN are also availale).


PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?naam ?plaatsnaam ?lat ?long WHERE {

  GRAPH <https://data.create.humanities.uva.nl/id/schrijverskabinet/> {
      ?person owl:sameAs ?dbnl ;
           schema:name ?naam .
  }

  GRAPH <https://data.create.humanities.uva.nl/id/ecartico/> {
      ?personEcartico schema:birthPlace ?birthPlaceEcartico ;
                   owl:sameAs ?dbnl .

    ?birthPlaceEcartico schema:name ?plaatsnaam ;
                        schema:geo [ schema:latitude ?lat ;
                                     schema:longitude ?long ] .
  }

}

Try it!

Plot on google maps

The result can be plotted when the result is downloaded as CSV and uploaded to a service such as Google Map Maker. See the result of the birthPlaces below. Every pointer is an author in the Poëticon. We hereby see the geophysical extent of the authors in the dataset.

How many theatre folk (schouwburgregent, -schrijver, -dichter) are reflected in the Panpoëticon?

Our last query includes yet a nother dataset, ONSTAGE. We use the DBNL links to link our persons to ECARTICO. In the following, a person on ECARTICO and ONSTAGE have to share at least one external node (but we don't care which URI this is, so we specify it as a ?variable).

The person in ECARTICO is the creator of a work, of which plays have been made. Each play has multiple performances. We then group by personName and count the number of distinct opvoeringen [=performances]. All performances of any play written by the author are summed together. To filter out contemporary performances, we filter on date. The result of this query is given in a table below.


PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX schema: <http://schema.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?personName (COUNT(DISTINCT ?opvoering) AS ?c) WHERE {

  GRAPH <https://data.create.humanities.uva.nl/id/schrijverskabinet/> {
      ?person a schema:Person;
        schema:name ?personName ;
      owl:sameAs ?dbnl .
  }

  GRAPH <https://data.create.humanities.uva.nl/id/ecartico/> {
      ?personEcartico owl:sameAs ?dbnl ;
                    owl:sameAs ?externeUri ;
                   schema:hasOccupation ?occupationRole .

    ?occupationRole schema:hasOccupation ?occupation .

    ?occupation rdfs:label ?occupationName .

    FILTER (LANG(?occupationName) = 'nl')

  }

    GRAPH <https://data.create.humanities.uva.nl/id/onstage/> {
      ?personOnstage a schema:Person ;
                    owl:sameAs ?externeUri .

    ?toneelstukuri schema:creator ?personOnstage .

    ?opvoering schema:subEvent/schema:workPerformed ?toneelstukuri ;
               schema:startDate ?date .

    FILTER (?date <= "1785"^^xsd:gYear)

  }

} GROUP BY ?personName ORDER BY DESC(?c)

Try it!

Author of a play Total number of play performances before 1786
Joost van den Vondel 973
Dirck Buysero 576
Frans Ryk 454
Jan Vos 449
Andries Pels 333
Pieter Langendijk 279
Pieter Cornelisz. Hooft 244
Claes Bruin 201
IJsbrand Vincent 191
Samuel Coster 188
Theodoor Rodenburg 164
Gerbrand Adriaensz Bredero 139
Willem Ogier 122
Leonard de Fuyter 122
Jan Harmensz. Krul 114
Balthazar Huydecoper 111
Katharina Lescailje 101
Govert Bidloo 100
Hermannus Angelkot sr. 94
Claude de Grieck 94
Johannes Haverkamp 90
Sijbrand Feitama 88
Geeraerd Brandt 83
Lukas Rotgans 77
Pieter Verhoek 77
Philip Malfait 77
Abraham Bogaert 66
Hermannus Angelkot jr. 63
Reyer Anslo 59
Joannes Antonides van der Goes 48
Ludolph Smids 47
Jan Jacobz. Schipper 43
Joan Blasius 36
Joan van Paffenrode 33
Jacob Cats 30
Gijsbert Tysens 29
Pieter Nuyts 27
Jan Zoet 26
Lambert (Paludanus) van den Broek 26
Jan Lemmers 22
Jan Jansz. Starter 20
Catharina Questiers 20
Jan Six 18
Jasper Lemmers 16
Christina Leonora de Neufville 14
Hendrik van der Zande 10
Jan Goeree 7
Jacob Westerbaen 6
Samuel van Hoogstraten 4
Jan van Hoogstraten 2

It turns out that this list is not so different from a general query into ONSTAGE that lists the same, regardless of a person's inclusion in the Poëticon.


results matching ""

    No results matching ""