Skip to content

Instantly share code, notes, and snippets.

@e-maud
Last active January 30, 2017 08:24
Show Gist options
  • Save e-maud/6cf636783f97ce8418b4 to your computer and use it in GitHub Desktop.
Save e-maud/6cf636783f97ce8418b4 to your computer and use it in GitHub Desktop.

Garzoni People Search

About Roles

Role distribution for Person Entities (ok)
SELECT ?roleType COUNT (distinct ?pm)
WHERE
{
  ?pm a grz-owl:Person .
  ?pm grz-owl:role/grz-owl:value ?roleType .
}
GROUP BY ?roleType
Role distribution for Person Entities for year Y / for time window
SELECT ?roleType COUNT (distinct ?pm)
WHERE
{
  ?pm a grz-owl:Person .
  ?pm grz-owl:role ?roleStatement .
  ?roleStatement grz-owl:value ?roleType .
  ?roleStatement sem:hasTimeStamp ?date .
  FILTER (year(?date) = 1583)
  [for time window: FILTER (year(?date) > 1583 AND year(?date) < 1599)]
}
GROUP BY ?roleType
Role distribution per gender (ok)
SELECT ?roleType COUNT (distinct ?p) 
WHERE
{
  ?p a grz-owl:Person .
  ?p grz-owl:role ?roleStmt .
  ?p grz-owl:gender "F"^^<http://www.w3.org/2001/XMLSchema#string> .
  ?roleStmt grz-owl:value/grz-owl:roleType ?roleType .
}
GROUP BY ?roleType 
Give me all person entities who appear as Master AND Apprentice
SELECT ?pe 
WHERE 
{
  SELECT ?pe ?roleType
  WHERE 
  {
    {
       ?pe  grz-owl:role ?roleStatement.        
       ?roleStatement grz-owl:value ?role .
       ?role grz-owl:roleType ?roleType .
    }
    {
       SELECT ?pe
       WHERE 
       {
              ?pe a grz-owl:Person . 
              ?pe  grz-owl:role ?roleStatement1.
              ?pe  grz-owl:role ?roleStatement2. 
              ?roleStatement1  grz-owl:value ?value1.
              ?roleStatement2  grz-owl:value ?value2 .
              ?value1  grz-owl:roleType grz-owl:master.
              ?value2  grz-owl:roleType grz-owl:apprentice .
       }
       GROUP BY ?pe 
    }
  }
  GROUP BY ?roleType
}
GROUP BY ?pe 
HAVING (COUNT (distinct ?roleType) > 1)
Break-down PERSON/ROLE/DATE for person entities having both Apprentice and Master roles
SELECT ?pe ?roleType ?year
  WHERE 
  {
    {
       ?pe  grz-owl:role ?roleStatement.        
       ?roleStatement grz-owl:value ?role .
       ?role grz-owl:roleType ?roleType .
       ?roleStatement sem:hasTimeStamp ?date .
       BIND (year(?date) AS ?year )
    }
    {

       SELECT ?pe
       WHERE {?pe a grz-owl:Person . 
              ?pe  grz-owl:role ?roleStatement1.
              ?pe  grz-owl:role ?roleStatement2. 
              ?roleStatement1  grz-owl:value ?value1.
              ?roleStatement2  grz-owl:value ?value2 .
              ?value1  grz-owl:roleType grz-owl:master.
              ?value2  grz-owl:roleType grz-owl:apprentice .
}
       GROUP BY ?pe
       
    }
  }
  GROUP BY ?roleType
ORDER BY ASC ( UCASE (str(?pe)))
Give me the persons who appear as Master AND Apprentice AND Guarantor:
SELECT ?pe 
WHERE 
{
  SELECT ?pe ?roleType
  WHERE 
  {
    {
       ?pe  grz-owl:role ?roleStatement.        
       ?roleStatement grz-owl:value ?role .
       ?role grz-owl:roleType ?roleType .
    }
    {
       SELECT ?pe
       WHERE 
       {
              ?pe a grz-owl:Person . 
              ?pe  grz-owl:role ?roleStatement1.
              ?pe  grz-owl:role ?roleStatement2.
              ?pe  grz-owl:role ?roleStatement3.
              ?roleStatement1  grz-owl:value ?value1.
              ?roleStatement2  grz-owl:value ?value2 .
              ?roleStatement3  grz-owl:value ?value3 .
              ?value1  grz-owl:roleType grz-owl:master.
              ?value2  grz-owl:roleType grz-owl:apprentice .
              ?value3  grz-owl:roleType grz-owl:guarantor .
       }
       GROUP BY ?pe 
    }
  }
  GROUP BY ?roleType
}
GROUP BY ?pe 
HAVING (COUNT (distinct ?roleType) > 2)
Number of guarantor per contract given a profession
SELECT ?numberOfGuar COUNT (distinct ?app)
WHERE
{
SELECT ?app COUNT (distinct ?guar) AS ?numberOfGuar
WHERE 
{
?guar a grz-owl:Person . 
?app a grz-owl:Person .
?master a grz-owl:Person .
?guar  grz-owl:role/grz-owl:value/grz-owl:roleType grz-owl:guarantor .
?master  grz-owl:role/grz-owl:value/grz-owl:roleType grz-owl:master .
?app  grz-owl:role/grz-owl:value/grz-owl:roleType grz-owl:apprentice .
?app grz-owl:has_master/grz-owl:value ?master .
?app grz-owl:has_guarantor/grz-owl:value ?guar .
?master grz-owl:profession/grz-owl:value/grz-owl:professionCategory "stampa" .
}
GROUP BY ?app
}
GROUP BY ?numberOfGuar
ORDER BY ASC (?numberOfGuar)
Give me apprentices who have the same guarantor in 2 different contracts
SELECT ?app ?guar COUNT (distinct ?contract) AS ?cnb
WHERE 
{
?guar a grz-owl:Person . 
?app a grz-owl:Person .
?guar  grz-owl:role/grz-owl:value/grz-owl:roleType grz-owl:guarantor .
?app  grz-owl:role/grz-owl:value/grz-owl:roleType grz-owl:apprentice .
?app grz-owl:has_guarantor/grz-owl:value ?guar .
?guar grz-owl:has_mention/grz-owl:is_entityLink_of/grz-owl:introduced_in ?contract .
?app grz-owl:has_mention/grz-owl:is_entityLink_of/grz-owl:introduced_in ?contract .
}
GROUP BY ?app ?guar
HAVING (COUNT (distinct ?contract) > 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment