migrants/queries/step_07_secondary_org_stats.rq
Daniel Hernandez b4ed3cbde7 Add step-07: clean up secondary organisations and simplify person-profession
- Remove redundant tm:secondaryOrganisation when it equals org:organization (230)
- Promote tm:secondaryOrganisation to org:organization when no primary exists (256)
- Replace tm:PersonProfession intermediate class with direct schema:hasOccupation
  links from persons to schema:Occupation instances (742 instances removed)
- Remove tm:PersonProfession class and its properties from the ontology
- Add step-07 binary, Rakefile task, figures, and documentation
2026-03-01 15:48:51 +01:00

38 lines
1.2 KiB
SPARQL

# Statistics about secondary organisations in org:Membership instances.
#
# Total with secondary organisation: 1222
# Secondary differs from primary: 736
# Secondary equals primary: 230
# Secondary exists but no primary: 256
PREFIX tm: <https://daniel.degu.cl/ontologies/theatre-migrants/>
PREFIX org: <http://www.w3.org/ns/org#>
# Count memberships with a secondary organisation
SELECT (COUNT(*) AS ?total_with_secondary) WHERE {
?s a org:Membership .
?s tm:secondaryOrganisation ?o .
}
;
# Count where secondary differs from primary
SELECT (COUNT(*) AS ?secondary_differs) WHERE {
?s a org:Membership .
?s org:organization ?primary .
?s tm:secondaryOrganisation ?secondary .
FILTER(?primary != ?secondary)
}
;
# Count where secondary equals primary
SELECT (COUNT(*) AS ?secondary_equals_primary) WHERE {
?s a org:Membership .
?s org:organization ?primary .
?s tm:secondaryOrganisation ?secondary .
FILTER(?primary = ?secondary)
}
;
# Count with secondary but no primary
SELECT (COUNT(*) AS ?secondary_no_primary) WHERE {
?s a org:Membership .
?s tm:secondaryOrganisation ?secondary .
FILTER NOT EXISTS { ?s org:organization ?primary }
}