Skip to main content

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

NodeExtendsPurpose
UserDefaultFieldsOptionalByAccount holder, authentication, preferences
ObserverDefaultFieldsOptionalByExperience reporting entity, data collection perspective

Type Definitions

NodeExtendsPurpose
SessionTypeTypeEntityDefines measurement session structure
ExperienceTypeTypeEntityDefines categories of subjective phenomena
SurveyTypeTypeEntityDefines questionnaire structures
SequenceTypeTypeEntityDefines ordered session/survey combinations
SubstanceTypeTypeEntityDefines substance categories
ConceptTypeDefaultFieldsOptionalByDefines concept categories
RelationshipTypeDefaultFieldsOptionalByDefines relationship categories

Type Versions

NodeExtendsPurpose
SessionTypeVersionVersionEntityImmutable session configuration
ExperienceTypeVersionVersionEntityImmutable experience definition
SurveyTypeVersionVersionEntityImmutable survey instrument
SequenceTypeVersionVersionEntityImmutable sequence protocol
SubstanceTypeVersionVersionEntityImmutable substance definition
ConceptTypeVersionVersionedConceptEntityImmutable concept definition
RelationshipTypeVersionVersionedConceptEntityImmutable relationship definition

Measurements

NodeExtendsPurpose
SessionMeasurementEntityActive measurement session instance
SurveyMeasurementEntitySurvey completion instance
SequenceMeasurementEntitySequence execution instance
GroupSessionMeasurementEntityMulti-participant session

Experience Data

NodeExtendsPurpose
ManifestationTemporalInstanceEntityRaw experience report with timestamps (called "Experience Instance" in docs)
AbstractTemporalInstanceEntityNormalized experience value (called "Unique Value" in docs)
AggregateTemporalInstanceEntityGroup of simultaneous experience instances
ResponseTemporalInstanceEntityIndividual survey answer

Research

NodeExtendsPurpose
ProjectDefaultFieldsResearch project container
CohortDefaultFieldsParticipant group within a project
CollectionTaskDefaultFieldsRequired measurement task
CollectionTaskStateDefaultFieldsPer-participant task progress
TaskCompletion--Completion record

Survey Components

NodeExtendsPurpose
QuestionDefaultFieldsSurvey question definition
QuestionScaleDefaultFieldsResponse scale definition
SequenceStepDefaultFieldsStep within a sequence type

Other Entities

NodeExtendsPurpose
ChatConversationDefaultFieldsAI conversation container
ChatMessageDefaultFieldsIndividual AI/user message
PresetDefaultFieldsSaved session configuration
TagDefaultFieldsContent tagging
FeedbackDefaultFieldsUser feedback
EventDefaultFieldsSystem/user events
PublicationDefaultFieldsResearch paper reference
PersonDefaultFieldsResearcher entity
InstitutionDefaultFieldsResearch institution
SourceDefaultFieldsPublication 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/.