Neo4j Graph Schema Reference
This document provides a compact reference of the iAm Neo4j graph database schema for writing accurate Cypher queries.
Node Types
Users and Observers
| Node | Extends | Purpose |
|---|---|---|
| User | DefaultFieldsOptionalBy | Account holder, authentication, preferences |
| Observer | DefaultFieldsOptionalBy | Experience reporting entity, data collection perspective |
Type Definitions
| Node | Extends | Purpose |
|---|---|---|
| SessionType | TypeEntity | Defines measurement session structure |
| ExperienceType | TypeEntity | Defines categories of subjective phenomena |
| SurveyType | TypeEntity | Defines questionnaire structures |
| SequenceType | TypeEntity | Defines ordered session/survey combinations |
| SubstanceType | TypeEntity | Defines substance categories |
| ConceptType | DefaultFieldsOptionalBy | Defines concept categories |
| RelationshipType | DefaultFieldsOptionalBy | Defines relationship categories |
Type Versions
| Node | Extends | Purpose |
|---|---|---|
| SessionTypeVersion | VersionEntity | Immutable session configuration |
| ExperienceTypeVersion | VersionEntity | Immutable experience definition |
| SurveyTypeVersion | VersionEntity | Immutable survey instrument |
| SequenceTypeVersion | VersionEntity | Immutable sequence protocol |
| SubstanceTypeVersion | VersionEntity | Immutable substance definition |
| ConceptTypeVersion | VersionedConceptEntity | Immutable concept definition |
| RelationshipTypeVersion | VersionedConceptEntity | Immutable relationship definition |
Measurements
| Node | Extends | Purpose |
|---|---|---|
| Session | MeasurementEntity | Active measurement session instance |
| Survey | MeasurementEntity | Survey completion instance |
| Sequence | MeasurementEntity | Sequence execution instance |
| GroupSession | MeasurementEntity | Multi-participant session |
Experience Data
| Node | Extends | Purpose |
|---|---|---|
| Manifestation | TemporalInstanceEntity | Raw experience report with timestamps (called "Experience Instance" in docs) |
| Abstract | TemporalInstanceEntity | Normalized experience value (called "Unique Value" in docs) |
| Aggregate | TemporalInstanceEntity | Group of simultaneous experience instances |
| Response | TemporalInstanceEntity | Individual survey answer |
Research
| Node | Extends | Purpose |
|---|---|---|
| Project | DefaultFields | Research project container |
| Cohort | DefaultFields | Participant group within a project |
| CollectionTask | DefaultFields | Required measurement task |
| CollectionTaskState | DefaultFields | Per-participant task progress |
| TaskCompletion | -- | Completion record |
Survey Components
| Node | Extends | Purpose |
|---|---|---|
| Question | DefaultFields | Survey question definition |
| QuestionScale | DefaultFields | Response scale definition |
| SequenceStep | DefaultFields | Step within a sequence type |
Other Entities
| Node | Extends | Purpose |
|---|---|---|
| ChatConversation | DefaultFields | AI conversation container |
| ChatMessage | DefaultFields | Individual AI/user message |
| Preset | DefaultFields | Saved session configuration |
| Tag | DefaultFields | Content tagging |
| Feedback | DefaultFields | User feedback |
| Event | DefaultFields | System/user events |
| Publication | DefaultFields | Research paper reference |
| Person | DefaultFields | Researcher entity |
| Institution | DefaultFields | Research institution |
| Source | DefaultFields | Publication venue |
Relationships
Ownership (HAS)
User → HAS → Observer
User → HAS → Session
Observer → HAS → Session
Observer → HAS → Manifestation
Observer → HAS → Abstract
Observer → HAS → Aggregate
Observer → HAS → Sequence
Project → HAS → Cohort
Project → HAS → Observer
Cohort → HAS → CollectionTask
Cohort → HAS → Observer
CollectionTask → HAS → CollectionTaskState
CollectionTaskState → HAS → Observer
CollectionTaskState → HAS → Session/Survey/Sequence
Type Instantiation (IMPLEMENTS)
Session → IMPLEMENTS → SessionTypeVersion
Survey → IMPLEMENTS → SurveyTypeVersion
Sequence → IMPLEMENTS → SequenceTypeVersion
Manifestation → IMPLEMENTS → Abstract
Abstract → IMPLEMENTS → ExperienceTypeVersion
SurveyTypeVersion → IMPLEMENTS → Question
Question → IMPLEMENTS → QuestionScale
Data Containment (REPORTED)
Session → REPORTED → Manifestation
Session → REPORTED → Aggregate
Session → REPORTED → Ingestion
Survey → REPORTED → Response
Sequence → REPORTED → Session/Survey
Aggregate → REPORTED → Manifestation
Temporal Sequencing (FOLLOWED_BY)
Manifestation → FOLLOWED_BY → Manifestation
Aggregate → FOLLOWED_BY → Aggregate
Session → FOLLOWED_BY → Session/Survey (within sequence)
Survey → FOLLOWED_BY → Session/Survey (within sequence)
ChatMessage → FOLLOWED_BY → ChatMessage
Other Relationships
Response → TO → Question
Manifestation → INVESTIGATES → Manifestation
SessionType → VERSION → SessionTypeVersion
SessionType → DRAFT → SessionTypeVersion
ExperienceTypeVersion ← IMPLEMENTS ← SessionTypeVersion
Person → CONTRIBUTED_TO → Publication
Publication → PUBLISHED_IN → Source
Publication → CITES → Publication
Person → AFFILIATED_WITH → Institution
Observer → BOOKMARKED → SessionType/SequenceType
Common Query Patterns
Project to Questions
MATCH (project:Project {uniqueName: "PROJECT_NAME"})
-[:HAS]->(cohort:Cohort)
-[:HAS]->(task:CollectionTask)
-[:IMPLEMENTS]->(surveyTypeVersion:SurveyTypeVersion)
-[:IMPLEMENTS]->(question:Question)
RETURN question
Session to Manifestations
MATCH (session:Session {id: "SESSION_ID"})
-[:REPORTED]->(manifestation:Manifestation)
-[:IMPLEMENTS]->(abstract:Abstract)
-[:IMPLEMENTS]->(experienceTypeVersion:ExperienceTypeVersion)
RETURN manifestation, abstract, experienceTypeVersion
Observer Sessions
MATCH (observer:Observer {id: "OBSERVER_ID"})
-[:HAS]->(session:Session)
-[:IMPLEMENTS]->(sessionTypeVersion:SessionTypeVersion)
RETURN session, sessionTypeVersion
Survey Responses
MATCH (survey:Survey {id: "SURVEY_ID"})
-[:REPORTED]->(response:Response)
-[:TO]->(question:Question)
RETURN response, question
Key Concepts
- Type Entities: Define categories (ExperienceType, SessionType, etc.)
- Version Entities: Immutable versions of types for research reproducibility
- Measurement Entities: Data collection instances (Session, Survey, Sequence)
- Instance Entities: Individual data points (Manifestation/Experience Instance, Response)
For detailed property definitions, see the individual model files in /server/src/resources/.