Esempi

Esempio 1

Trovare tutti i film italiani in bianco e nero, dei quali il compositore della colonna sonora sia nato in una città del Trentino con meno di 40.000 abitanti.

Forniremo una serie di query di complessità incrementale.

Iniziamo a cercare tutti i film di produzione italiana (Esegui Query QA).

SELECT * WHERE {
 ?movie a
     <http://dbpedia.org/ontology/Film> .
 ?movie <http://dbpedia.org/ontology/country> 
     <http://it.dbpedia.org/resource/Italia> .
}

Estendiamo poi la query cercando tutti i film di produzione italiana in bianco/nero (Esegui Query QB).

SELECT * WHERE {
 ?movie a
     <http://dbpedia.org/ontology/Film> .
 ?movie <http://dbpedia.org/ontology/country>
     <http://it.dbpedia.org/resource/Italia> .
 ?movie <http://dbpedia.org/ontology/filmColourType> ?colour .
 FILTER ( ?colour in ("B/N"@it, "bianco/nero"@it ) )
}

Cerchiamo ora i compositori delle colonne sonore di tutti i film di produzione italiana in bianco/nero (Esegui Query QC).

SELECT * WHERE {
 ?movie a
     <http://dbpedia.org/ontology/Film> .
 ?movie <http://dbpedia.org/ontology/country>
     <http://it.dbpedia.org/resource/Italia> .
 ?movie <http://dbpedia.org/ontology/filmColourType> ?colour .
 ?movie <http://dbpedia.org/ontology/musicComposer>  ?composer .
 FILTER ( ?colour in ("B/N"@it, "bianco/nero"@it ) )
}

Cerchiamo infine i compositori delle colonne sonore di tutti i film di produzione italiana in bianco/nero che siano nati in una citta’
del Trentino Alto Adige con meno di 40.000 abitanti (Esegui Query QD).

SELECT * WHERE {
 ?movie a
    <http://dbpedia.org/ontology/Film> .
 ?movie <http://dbpedia.org/ontology/country>
    <http://it.dbpedia.org/resource/Italia> .
 ?movie <http://dbpedia.org/ontology/filmColourType> ?colour .
 ?movie <http://dbpedia.org/ontology/musicComposer>  ?composer .

 ?composer   <http://dbpedia.org/ontology/birthPlace>
    ?birthplace .
 ?birthplace <http://dbpedia.org/ontology/administrativeDistrict> 
    <http://it.dbpedia.org/resource/Trentino-Alto_Adige> .
 ?birthplace <http://dbpedia.org/ontology/populationTotal>
    ?population
 FILTER ( ?colour in ("B/N"@it, "bianco/nero"@it) AND ?population < 40000 )
}

Esempio 2

Trovare tutti gli artisti italiani donna con massimo 40 anni nate in una città con meno di 40.000 abitanti.

Iniziamo col recuperare tutte le persone di nazionalita’ italiana che abbiano un nome e cognome espressi come letterali (Esegui Query Q1).

SELECT * WHERE {
  ?p a <http://dbpedia.org/ontology/Person> .
  ?p <http://it.dbpedia.org/property/nome> ?name .
  ?p <http://it.dbpedia.org/property/cognome> ?surname .
  ?p <http://it.dbpedia.org/property/nazionalità>  "italiana"@it .

  FILTER( isLiteral(?name) AND isLiteral(?surname) )
}

Selezioniamo poi fra queste persone quelle di professione artista (Esegui Query Q2).

SELECT * WHERE {
  ?person a <http://dbpedia.org/ontology/Person> .
  ?person <http://it.dbpedia.org/property/nome> ?name .
  ?person <http://it.dbpedia.org/property/cognome> ?surname .
  ?p <http://it.dbpedia.org/property/nazionalità> "italiana"@it .
  ?person <http://it.dbpedia.org/property/attività> "artista"@it .

  FILTER( isLiteral(?name) AND isLiteral(?surname) )
}

Identifichiamo fra queste le persone di sesso femminile con età non superiore ai 40 anni (Esegui Query Q3).

SELECT * WHERE {
  ?person a <http://dbpedia.org/ontology/Person> .
  ?person <http://it.dbpedia.org/property/nome> ?name .
  ?person <http://it.dbpedia.org/property/cognome> ?surname .
  ?p <http://it.dbpedia.org/property/nazionalità> "italiana"@it .
  ?person <http://it.dbpedia.org/property/attività> "artista"@it .
  ?person <http://it.dbpedia.org/property/sesso> "F"@it .
  ?person <http://dbpedia.org/ontology/birthYear> ?birth .

  FILTER( isLiteral(?name) AND isLiteral(?surname) 
      AND ?birth >= "1972-01-01"^^xsd:date)
}

Identifichiamo per le artiste il luogo di nascita e per il luogo di nascita filtriamo sulla popolazione (Esegui Query Q4).

SELECT * WHERE {
  ?person a <http://dbpedia.org/ontology/Person> .
  ?person <http://it.dbpedia.org/property/nome> ?name .
  ?person <http://it.dbpedia.org/property/cognome> ?surname .
  ?p <http://it.dbpedia.org/property/nazionalità> "italiana"@it .
  ?person <http://it.dbpedia.org/property/attività> "artista"@it .
  ?person <http://it.dbpedia.org/property/sesso> "F"@it .
  ?person <http://dbpedia.org/ontology/birthYear> ?birth .
  ?person <http://dbpedia.org/ontology/birthPlace> ?city .
  ?city a <http://dbpedia.org/ontology/PopulatedPlace> .
  ?city rdfs:label ?birthplace .
  ?city <http://dbpedia.org/ontology/populationTotal> ?population .

  FILTER( isLiteral(?name) AND isLiteral(?surname) 
    AND ?birth >= "1972-01-01"^^xsd:date
    AND ?population < 40000)
}

Otteniamo così il risultato cercato.

Esempio 3

13 Verticale: Archeologo e Scrittore del secolo scorso (6 lettere).

Trovare tutti gli archeologi che sono stati anche scrittori nati nel 900 con un cognome lungo esattamente 6 lettere (Esegui Query Q5).

SELECT str(?surname), ?p WHERE {
  ?p a  . 
  ?p  "scrittore"@it .
  ?p  "archeologo"@it .
  ?p  "1900"^^xsd:int .
  ?p  ?surname

   FILTER( strlen(?surname) = 6 )
}