This showcase provides examples of using SPARQL Anything to query open data from the Tate Gallery collection.
The repository is included as Git submodule in folder collection.
In what follows, fx is a placeholder for java -jar sparql-anything-<version>.jar.
See the SPARQL Anything usage documentation for details on Java options such as enabling logging.
The query generates a Schema.org description of artists from the CSV file.
| Extract artworks and subjects | |
|---|---|
| Query | queries/artists.sparql |
| Input | collection/artist_data.csv |
| Output | artists.ttl |
| Type | CONSTRUCT |
| Options | csv.headers=true |
| Formats | CSV |
| Level | Novice |
Usage:
fx -q queries/artists.sparql -f TTL -o artists.ttl
Output excerpt from artists.ttl:
@prefix schema: <http://schema.org/> .
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
@prefix tate: <http://sparql.xyz/example/tate/> .
@prefix tsub: <http://sparql.xyz/example/tate/subject/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
tate:artist-1218 a schema:Person ;
rdfs:label "Greiffenhagen, Maurice" ;
schema:birthDate "1862" ;
schema:birthPlace "London, United Kingdom" ;
schema:deathDate "1862" ;
schema:deathPlace "London, United Kingdom" ;
schema:gender "Male" ;
schema:url "http://www.tate.org.uk/art/artists/maurice-greiffenhagen-1218" .
tate:artist-10241 a schema:Person ;
rdfs:label "Apóstol, Alexander" ;
schema:birthDate "1969" ;
schema:birthPlace "Barquisimeto, Venezuela" ;
schema:deathDate "1969" ;
schema:deathPlace "" ;
schema:gender "Male" ;
schema:url "http://www.tate.org.uk/art/artists/alexander-apostol-10241" .
...This query combines two x-sparql-anything transformation. The first, iterates over the CSV file artworks_data.csv. For each one of the artworks, the Tate Gallery open data includes a JSON file with some more details, including a list of annotated subjects. The query finds the related JSON and queries it to retrieve the subjects. The output is projected in a KG of artworks and subjects, via a CONSTRUCT query.
| Title | Extract artworks and subjects |
|---|---|
| Query | queries/arts-and-subjects.sparql |
| Input | collection/artworks_data.csv, collection/artworks/ |
| Output | arts-and-subjects.ttl |
| Type | CONSTRUCT |
| Options | csv.headers=true |
| Formats | CSV, JSON |
| Level | Novice |
Run the example as follows:
fx -q queries/arts-and-subjects.sparql -f TTL -o arts-and-subjects.ttl
This example explores all the JSON files of the open data collection and generates a unified SKOS taxonomy of all artwork subject annotations of the Tate Gallery open dataset.
| Title | Build a SKOS taxonomy of subjects |
|---|---|
| Query | queries/subjects-as-skos.sparql |
| Input | collection/artworks_data.csv, collection/artworks/ |
| Output | subjects.ttl |
| Type | CONSTRUCT |
| Options | csv.headers=true |
| Formats | CSV, JSON |
| Level | Novice |
Run the query as follows:
fx -q queries/subjects-as-skos.sparql -f TTL -o subjects.ttl
Output (excerpt, see subjects.ttl):
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
@prefix tate: <http://sparql.xyz/example/tate/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix tsub: <http://sparql.xyz/example/tate/subject/> .
tsub:852 a skos:Concept ;
rdfs:label "condom" ;
skos:broader tsub:88 ;
skos:inScheme tsub:subjects .
tsub:2166 a skos:Concept ;
rdfs:label "Caiaphas" ;
skos:broader tsub:134 ;
skos:inScheme tsub:subjects .
tsub:18356 a skos:Concept ;
rdfs:label "New York, Rockefeller Center" ;
skos:broader tsub:0 ;
skos:inScheme tsub:subjects .
tsub:15852 a skos:Concept ;
rdfs:label "Texel" ;
skos:broader tsub:111 ;
skos:inScheme tsub:subjects .
...
This example extracts all subjects from the JSON files in collections/artworks/ and return a distinct set of subjects as CSV.
| Title | Generate a CSV list of subjects |
|---|---|
| Query | queries/subjects-list.sparql |
| Input | collection/artworks_data.csv, collection/artworks/ |
| Output | subjects.csv |
| Type | SELECT |
| Options | csv.headers=true |
| Formats | CSV, JSON |
| Level | Novice |
Run the query as follows:
fx -q queries/subjects-list.sparql -f CSV -o subjects.csv
This example extracts all subjects from the JSON files in collections/artworks/ and return the whole hierarchy as CSV table.
| Title | Generate a CSV list of the subjects hierarchy |
|---|---|
| Query | queries/subjects-hierarchy.sparql |
| Input | collection/artworks_data.csv, collection/artworks/ |
| Output | subjects.csv |
| Type | SELECT |
| Options | csv.headers=true |
| Formats | CSV, JSON |
| Level | Novice |
Run the query as follows:
fx -q queries/subjects-hierarchy.sparql -f CSV -o hierarchy.csv
This query combines two x-sparql-anything transformation. The first, iterates over the CSV file artworks_data.csv. For each one of the artworks, the Tate Gallery open data includes a JSON file with some more details, including a list of annotated subjects. The query finds the related JSON and queries it to retrieve the subjects. The output is projected in a KG of artworks and subjects, via a CONSTRUCT query.
| Title | Generate a CSV of artworks + related subjects |
|---|---|
| Query | queries/arts-and-subjects-list.sparql |
| Input | collection/artworks_data.csv, collection/artworks/ |
| Output | arts-and-subjects-list.csv |
| Type | SELECT |
| Options | csv.headers=true |
| Formats | CSV, JSON |
| Level | Novice |
Run the example as follows:
fx -q queries/arts-and-subjects-list.sparql -f CSV -o arts-and-subjects-list.csv
This example is a process divided in two steps.
Step 1: Generate a table associating subjectId and artworkId. The table is produced by querying an RDF file of artworks and subjects. I this example, the input is an RDF and the output is CSV!
| Title | Count artworks for each subjects (Part 1) |
|---|---|
| Query | queries/subjects-artworks-id.sparql |
| Input | arts-and-subjects.ttl |
| Output | subjects-artworks-id.csv |
| Type | SELECT |
| Options | |
| Formats | - |
| Level | Novice |
Run the example as follows:
fx -q queries/subjects-artworks-id.sparql -o subjects-artworks-id.csv -f CSV -l arts-and-subjects.ttl
Step 2: Reading the CSV table and counting the number of artworks for each subject
| Title | Count artworks for each subjects (Part 2) |
|---|---|
| Query | queries/subjects-artworks-count.sparql |
| Input | subjects-artworks-id.csv |
| Output | subjects-artworks-count.csv |
| Type | SELECT |
| Options | |
| Formats | - |
| Level | Novice |
Run the example as follows:
fx -q queries/subjects-artworks-count.sparql -o subjects-artworks-count.csv -f CSV
This example shows how to generate a CSV file including artworks, subjects, and link to thumbnail images by querying the arts-and-subjects.ttl file.
Run the example as follows:
fx -q queries/subjects-artworks-images.sparql -o subjects-artworks-images.csv -f CSV -l arts-and-subjects.ttl
Mediums information from artwork's JSON files, aggregated into a CSV.
fx -q queries/classification-medium.sparql -o materials.csv -f CSV
### Generate CSV of id + time
Time information from the CSV to another CSV.
fx -q queries/time.sparql -o time.csv -f CSV
### List of genres
Information is distributed in the artworks' JSON files.
fx -q queries/genres.sparql -o genres.csv -f CSV
### List of decades
Information is distributed in the artworks' JSON files.
fx -q queries/decades.sparql -o decades.csv -f CSV