Skip to main content

Querying the Org Chart

This walkthrough demonstrates common organizational queries—from simple lookups to complex graph traversals.

HR Reviews the Team Structure

The HR team needs to answer various questions about the organization. Let's build queries for each.

List All Employees

Start with a simple query to see everyone:


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?person": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": { "@id": "?person", "@type": "org:Person" },
"orderBy": "?person"
}

Find Direct Reports

Who reports directly to the CTO?


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?person": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": { "@id": "?person", "@type": "org:Person", "org:reportsTo": {"@id": "org:people/marcus-johnson"} }
}

Result: Alex Rivera (Platform Lead) and Jordan Patel (Product Lead).

Find a Person's Manager

Who does Emma Wilson report to?


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?manager": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": { "@id": "org:people/emma-wilson", "org:reportsTo": "?manager" }
}

Result: Alex Rivera (Platform Lead).

Team Members by Department

Find everyone in the Platform Team:


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?person": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": { "@id": "?person", "@type": "org:Person", "org:department": {"@id": "org:departments/engineering/platform"} }
}

Result: Alex Rivera, Emma Wilson, Michael Brown, Sophia Martinez.

Employees with Their Managers

Show each person alongside their manager's name:


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": ["?firstName", "?lastName", "?title", "?managerFirstName", "?managerLastName"],
"where": [
{ "@id": "?person", "@type": "org:Person", "schema:givenName": "?firstName", "schema:familyName": "?lastName", "org:title": "?title", "org:reportsTo": "?manager" },
{ "@id": "?manager", "schema:givenName": "?managerFirstName", "schema:familyName": "?managerLastName" }
]
}

info

Note that Sarah Chen (CEO) won't appear in results since she has no manager—there's no reportsTo relationship to match.

Find Project Members

Who's working on the Mobile App project?


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?person": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": { "@id": "org:projects/mobile-app", "org:members": "?person" }
}

Result: James Taylor, Olivia Garcia, William Anderson.

Projects a Person Works On

What projects is Emma Wilson involved in?


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?project": ["schema:name", "org:status"]
},
"where": [
{ "@id": "?project", "@type": "org:Project" },
["union",
[{ "@id": "?project", "org:members": {"@id": "org:people/emma-wilson"} }],
[{ "@id": "?project", "org:lead": {"@id": "org:people/emma-wilson"} }]
]
]
}

The union clause finds projects where Emma is either a member or the lead.

Find Experts in a Skill

Who are the JavaScript experts?


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?person": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": { "@id": "?ps", "@type": "org:PersonSkill", "org:skill": {"@id": "org:skills/javascript"}, "org:proficiency": "expert", "org:person": "?person" }
}

Result: Alex Rivera, James Taylor.

Skills in a Department

What skills exist on the Platform Team?


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": ["?skillName", "(count ?person)"],
"where": [
{ "@id": "?person", "org:department": {"@id": "org:departments/engineering/platform"} },
{ "@id": "?ps", "org:person": "?person", "org:skill": "?skill" },
{ "@id": "?skill", "schema:name": "?skillName" }
],
"groupBy": "?skillName",
"orderBy": [{"desc": "(count ?person)"}]
}

This groups by skill and counts how many people have each one.

Colleagues (Same Manager)

Find Jordan Patel's colleagues—people with the same manager:


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?colleague": ["schema:givenName", "schema:familyName", "org:title"]
},
"where": [
{ "@id": "org:people/jordan-patel", "org:reportsTo": "?manager" },
{ "@id": "?colleague", "org:reportsTo": "?manager" },
["filter", "(!= ?colleague {\"@id\": \"org:people/jordan-patel\"})"]
]
}

Result: Alex Rivera (they both report to Marcus Johnson).

Recent Hires

Find employees hired in the last year:


{
"@context": {
"org": "https://org-example.com/ns/",
"schema": "http://schema.org/"
},
"select": {
"?person": ["schema:givenName", "schema:familyName", "org:title", "org:hireDate"]
},
"where": [
{ "@id": "?person", "@type": "org:Person", "org:hireDate": "?hireDate" },
["filter", "(>= ?hireDate \"2022-01-01\")"]
],
"orderBy": [{"desc": "?hireDate"}]
}

Summary

Key query patterns for organizational data:

PatternUse Case
Direct relationshipFind manager, find direct reports
Traverse via joinPerson → Department, PersonSkill → Skill
UnionMatch multiple conditions (member OR lead)
Filter with !=Exclude self from results
Group + CountAggregate skills by department
Date filtersRecent hires

Next, learn how to use transitive queries to find everyone in a manager's entire reporting chain.