Positions in Organizations

Count the types of positions in each organization

Positions relate a person to an organization.  Each position has a type – faculty, staff, etc.  We would like to know how many positions of each type are in each organization, and which organizations have the most faculty, librarians, etc. The query below is a start.  We could embellish the query with additional selections having to do with date ranges, positions per person, and so on.

The query selects positions and identifies their "most specific type" – this is a Vitro concept in which the various types associated with an entity are reduced to a single type for display purposes.  The position must relate to an organization.  In this query we show the uri of the organizaton and the position type in the results.

Count the types of positions
SELECT ?org ?pos_type (COUNT(DISTINCT ?pos) AS ?pos_count)
WHERE {
    ?pos a vivo:Position .
    ?pos vitro:mostSpecificType ?pos_type .
    ?pos vivo:relates ?org .
    ?org a foaf:Organization .
}
GROUP BY ?pos_type ?org
ORDER BY ?pos_type DESC(?pos_count) ?org


Individual Persons 

Retrieve the positions for a single person

The query begins by finding the person of interest – here the person is identified by the value of a label.  This may not return a single person.  But for this example, let's assume it does.  We could construct a query which selected the person based on their primary email or their ORCiD, or some other identifier.  The query then gets all the relatedBy assertions for this person.  VIVO uses relatedBy in many settings.  The query then limits the results to insure that the relatedBy assertions relate a foaf:Person to a vivo:Position.  The query then gets the labels for each position.

Note:  The use of SELECT * returns all variables used in the query.  

Retrieve the positions for a single person
SELECT *
WHERE {
    ?person rdfs:label  'Conlon, Michael' .
    ?person vivo:relatedBy ?position .
    ?person a foaf:Person .
    ?position a vivo:Position .
    ?position rdfs:label ?position_label .
}
  • No labels