Comprehensive Entity Types Reference

Observable: Comprehensive Entity Types Reference

User Intent

"What entity types can Graphlit extract? What properties does each type have?"

Operation

  • Concept: Observable entity types (Schema.org-based)

  • GraphQL Enum: ObservableTypes

  • Entity Types: 20+ types supported

  • Common Use Cases: Understanding available entities, choosing extraction types, entity properties

All Observable Types

Graphlit supports 20+ entity types, all based on Schema.org standards for interoperability.

Core Entity Types

Person

Type: ObservableTypes.Person Schema.org: @type: "Person" Use For: People, authors, contacts, team members, contributors

Properties:

{
  name: string;                    // Full name
  email: string;                   // Email address
  givenName: string;               // First name
  familyName: string;              // Last name
  jobTitle: string;                // Job title/role
  affiliation: string;             // Company/organization
  telephone: string;               // Phone number
  address: string;                 // Physical address
}

Examples:

  • "Kirk Marple, CEO of Graphlit"

  • "Maria Garcia, Software Engineer at Microsoft"

  • Contact information in emails

Organization

Type: ObservableTypes.Organization Schema.org: @type: "Organization" Use For: Companies, teams, departments, organizations

Properties:

{
  name: string;                    // Organization name
  description: string;             // Description
  url: string;                     // Website URL
  foundingDate: string;            // When founded
  location: string;                // Headquarters location
}

Examples:

  • "Graphlit, a semantic memory platform"

  • "Microsoft Corporation"

  • "Stanford University"

Place

Type: ObservableTypes.Place Schema.org: @type: "Place" Use For: Locations, offices, venues, geographic entities

Properties:

{
  name: string;                    // Place name
  address: {
    streetAddress: string;
    city: string;
    region: string;                // State/province
    country: string;
    postalCode: string;
  };
  geo: {
    latitude: number;
    longitude: number;
  };
  h3: string;                      // H3 geospatial index
}

Examples:

  • "Seattle, Washington"

  • "123 Main St, San Francisco, CA 94105"

  • "Golden Gate Park"

Event

Type: ObservableTypes.Event Schema.org: @type: "Event" Use For: Meetings, conferences, appointments, events

Properties:

{
  name: string;                    // Event name
  description: string;             // Event description
  startDate: string;               // Start date/time
  endDate: string;                 // End date/time
  location: string;                // Where it takes place
  attendees: string[];             // Who attends
  organizer: string;               // Who organizes
}

Examples:

  • "AWS re:Invent 2024"

  • "Q4 Planning Meeting"

  • "Product Launch Event"

Product

Type: ObservableTypes.Product Schema.org: @type: "Product" Use For: Products, tools, services

Properties:

{
  name: string;                    // Product name
  brand: string;                   // Brand/manufacturer
  price: number;                   // Price
  description: string;             // Product description
  manufacturer: string;            // Who makes it
}

Examples:

  • "iPhone 15 Pro"

  • "Tesla Model 3"

  • "Adobe Photoshop"

Repo

Type: ObservableTypes.Repo Schema.org: @type: "SoftwareSourceCode" Use For: GitHub/GitLab repositories, source code repos

Properties:

{
  name: string;                    // Repository name
  url: string;                     // Repository URL
  owner: string;                   // Owner/organization
  description: string;             // Repository description
}

Examples:

  • "graphlit/graphlit-samples"

  • "facebook/react"

  • "microsoft/vscode"

Software

Type: ObservableTypes.Software Schema.org: @type: "SoftwareApplication" Use For: Software products, applications, tools

Properties:

{
  name: string;                    // Software name
  version: string;                 // Version number
  description: string;             // What it does
  manufacturer: string;            // Who makes it
}

Examples:

  • "Python 3.11"

  • "Docker"

  • "PostgreSQL 15"

Classification Types

Category

Type: ObservableTypes.Category Schema.org: @type: "Thing" with category Use For: Topics, classifications, tags, subjects

Properties:

{
  name: string;                    // Category name
  description: string;             // Category description
}

Examples:

  • "Machine Learning"

  • "Product Development"

  • "Financial Reports"

Label

Type: ObservableLabel Schema.org: @type: "Thing" with label Use For: Tags, labels, keywords

Properties:

{
  name: string;                    // Label name
  color: string;                   // Label color (optional)
  description: string;             // Label description
}

Examples:

  • "urgent"

  • "bug"

  • "high-priority"

Medical Entity Types (12 types)

All fully supported - not beta

MedicalCondition

Type: ObservableTypes.MedicalCondition Schema.org: @type: "MedicalCondition" Use For: Diseases, symptoms, diagnoses

Examples:

  • "Type 2 Diabetes"

  • "Hypertension"

  • "COVID-19"

MedicalDrug

Type: ObservableTypes.MedicalDrug Schema.org: @type: "Drug" Use For: Medications, pharmaceuticals

Examples:

  • "Aspirin"

  • "Metformin"

  • "Lisinopril"

MedicalDrugClass

Type: ObservableMedicalDrugClass Schema.org: @type: "DrugClass" Use For: Drug categories

Examples:

  • "Antibiotics"

  • "Beta blockers"

  • "Statins"

MedicalProcedure

Type: ObservableTypes.MedicalProcedure Schema.org: @type: "MedicalProcedure" Use For: Surgeries, medical procedures

Examples:

  • "Appendectomy"

  • "MRI Scan"

  • "Blood Transfusion"

MedicalTest

Type: ObservableTypes.MedicalTest Schema.org: @type: "MedicalTest" Use For: Diagnostic tests, lab tests

Examples:

  • "Complete Blood Count"

  • "X-Ray"

  • "Glucose Tolerance Test"

MedicalStudy

Type: ObservableTypes.MedicalStudy Schema.org: @type: "MedicalStudy" Use For: Clinical trials, research studies

Examples:

  • "Phase III Clinical Trial"

  • "Longitudinal Study on Heart Disease"

MedicalDevice

Type: ObservableMedicalDevice Schema.org: @type: "MedicalDevice" Use For: Medical equipment, devices

Examples:

  • "Pacemaker"

  • "Insulin Pump"

  • "Stethoscope"

MedicalTherapy

Type: ObservableMedicalTherapy Schema.org: @type: "MedicalTherapy" Use For: Treatments, therapies

Examples:

  • "Physical Therapy"

  • "Radiation Therapy"

  • "Cognitive Behavioral Therapy"

MedicalGuideline

Type: ObservableMedicalGuideline Schema.org: @type: "MedicalGuideline" Use For: Clinical guidelines, protocols

Examples:

  • "AHA Heart Disease Guidelines"

  • "CDC Vaccination Schedule"

MedicalIndication

Type: ObservableMedicalIndication Schema.org: @type: "MedicalIndication" Use For: Reasons for treatment

Examples:

  • "High Blood Pressure"

  • "Bacterial Infection"

MedicalContraindication

Type: ObservableMedicalContraindication Schema.org: @type: "MedicalContraindication" Use For: Reasons to avoid treatment

Examples:

  • "Pregnancy"

  • "Allergy to Penicillin"

TypeScript (Canonical)

import { Graphlit } from 'graphlit-client';
import { ObservableTypes } from 'graphlit-client/dist/generated/graphql-types';

const graphlit = new Graphlit();

// Extract all core types
const workflow = await graphlit.createWorkflow({
  name: "Comprehensive Extraction",
  preparation: {
    jobs: [{
      connector: {
        type: FilePreparationServiceTypes.Document
      }
    }]
  },
  extraction: {
    jobs: [{
      connector: {
        type: EntityExtractionServiceTypes.ModelText,
        extractedTypes: [
          // Core types
          ObservableTypes.Person,
          ObservableTypes.Organization,
          ObservableTypes.Place,
          ObservableTypes.Event,
          ObservableTypes.Product,
          ObservableTypes.Repo,
          ObservableTypes.Software,
          // Classification
          ObservableTypes.Category,
          ObservableTypes.Label
        ]
      }
    }]
  }
});

// Extract medical types
const medicalWorkflow = await graphlit.createWorkflow({
  name: "Medical Extraction",
  extraction: {
    jobs: [{
      connector: {
        type: EntityExtractionServiceTypes.ModelText,
        extractedTypes: [
          ObservableTypes.MedicalCondition,
          ObservableTypes.MedicalDrug,
          ObservableTypes.MedicalProcedure,
          ObservableTypes.MedicalTest,
          ObservableTypes.MedicalStudy
        ]
      }
    }]
  }
});

Use Cases by Domain

Business Documents

extractedTypes: [
  ObservableTypes.Person,           // Employees, contacts
  ObservableTypes.Organization,     // Companies, partners
  ObservableTypes.Place,            // Offices, locations
  ObservableTypes.Event,            // Meetings, conferences
  ObservableTypes.Product           // Products discussed
]
extractedTypes: [
  ObservableTypes.Person,           // Parties, attorneys
  ObservableTypes.Organization,     // Companies involved
  ObservableTypes.Place,            // Jurisdiction, addresses
  ObservableTypes.Event             // Important dates
]

Technical Documentation

extractedTypes: [
  ObservableTypes.Software,         // Technologies mentioned
  ObservableTypes.Product,          // Products/tools
  ObservableTypes.Repo,             // Code repositories
  ObservableTypes.Organization      // Companies/projects
]

Medical Literature

extractedTypes: [
  ObservableTypes.MedicalCondition,
  ObservableTypes.MedicalDrug,
  ObservableTypes.MedicalProcedure,
  ObservableTypes.MedicalTest,
  ObservableTypes.MedicalStudy,
  ObservableTypes.Person,           // Researchers, authors
  ObservableTypes.Organization      // Research institutions
]

News Articles

extractedTypes: [
  ObservableTypes.Person,           // People mentioned
  ObservableTypes.Organization,     // Companies, orgs
  ObservableTypes.Place,            // Locations
  ObservableTypes.Event,            // News events
  ObservableTypes.Category          // Topics, subjects
]

GitHub/Code

extractedTypes: [
  ObservableTypes.Repo,             // Repositories
  ObservableTypes.Person,           // Contributors
  ObservableTypes.Organization,     // Companies, teams
  ObservableTypes.Software,         // Technologies
  ObservableTypes.Label             // Issue labels
]

All entity types available as enums

extraction_types = [ ObservableTypes.PERSON, ObservableTypes.ORGANIZATION, ObservableTypes.PLACE, ObservableTypes.EVENT, ObservableTypes.PRODUCT, ObservableTypes.REPO, ObservableTypes.SOFTWARE, ObservableTypes.CATEGORY, ObservableTypes.LABEL, # Medical types ObservableTypes.MEDICAL_CONDITION, ObservableTypes.MEDICAL_DRUG, # ... etc ]


**C#**:
```csharp
using Graphlit;

// All entity types available as enum
var extractionTypes = new[]
{
    ObservableTypes.Person,
    ObservableTypes.Organization,
    ObservableTypes.Place,
    ObservableTypes.Event,
    ObservableTypes.Product,
    ObservableTypes.Repo,
    ObservableTypes.Software,
    ObservableTypes.Category,
    ObservableLabel,
    // Medical types
    ObservableTypes.MedicalCondition,
    ObservableTypes.MedicalDrug,
    // ... etc
};

Developer Hints

Choose Relevant Types

//  Don't extract everything
extractedTypes: [
  /* all 20+ types */
]
// Slow, expensive, noisy

// ✓ Extract what you need
extractedTypes: [
  ObservableTypes.Person,
  ObservableTypes.Organization
]
// Fast, focused, relevant

Schema.org Compliance

// All types map to Schema.org
// Enables:
// - JSON-LD export
// - Standard property names
// - Interoperability with other tools
// - SEO-friendly structured data

Medical Types Fully Supported

// Not beta - production ready
// All 12 medical types work
extractedTypes: [
  ObservableTypes.MedicalCondition,
  ObservableTypes.MedicalDrug,
  ObservableTypes.MedicalProcedure,
  // ... all 12 types available
]

Common Issues & Solutions

Issue: Too many entities extracted (noise) Solution: Narrow down entity types

//  Too broad
extractedTypes: [
  /* all types */
]

// ✓ Focused
extractedTypes: [
  ObservableTypes.Person,
  ObservableTypes.Organization
]

Issue: Missing entities Solution: Check if type is included

// If you want products, must include:
extractedTypes: [
  ObservableTypes.Product  // Don't forget to add
]

Issue: Want custom entity types Solution: Currently limited to Schema.org types

// Cannot create custom types
// Use closest Schema.org type
// Or use Category/Label for custom classifications

Production Example

async function demonstrateEntityTypes() {
  console.log('\n=== ENTITY TYPE DEMONSTRATION ===\n');
  
  // Create workflows for different domains
  
  // 1. Business workflow
  const businessWorkflow = await graphlit.createWorkflow({
    name: "Business Entity Extraction",
    extraction: {
      jobs: [{
        connector: {
          type: EntityExtractionServiceTypes.ModelText,
          extractedTypes: [
            ObservableTypes.Person,
            ObservableTypes.Organization,
            ObservableTypes.Place,
            ObservableTypes.Event,
            ObservableTypes.Product
          ]
        }
      }]
    }
  });
  console.log('✓ Created business workflow');
  
  // 2. Technical workflow
  const techWorkflow = await graphlit.createWorkflow({
    name: "Technical Entity Extraction",
    extraction: {
      jobs: [{
        connector: {
          type: EntityExtractionServiceTypes.ModelText,
          extractedTypes: [
            ObservableTypes.Software,
            ObservableTypes.Repo,
            ObservableTypes.Product,
            ObservableTypes.Organization,
            ObservableTypes.Person
          ]
        }
      }]
    }
  });
  console.log('✓ Created technical workflow');
  
  // 3. Medical workflow
  const medicalWorkflow = await graphlit.createWorkflow({
    name: "Medical Entity Extraction",
    extraction: {
      jobs: [{
        connector: {
          type: EntityExtractionServiceTypes.ModelText,
          extractedTypes: [
            ObservableTypes.MedicalCondition,
            ObservableTypes.MedicalDrug,
            ObservableTypes.MedicalProcedure,
            ObservableTypes.MedicalTest,
            ObservableTypes.MedicalStudy,
            ObservableTypes.Person,
            ObservableTypes.Organization
          ]
        }
      }]
    }
  });
  console.log('✓ Created medical workflow');
  
  console.log('\nEntity type counts by workflow:');
  console.log(`  Business: 5 types`);
  console.log(`  Technical: 5 types`);
  console.log(`  Medical: 7 types`);
  
  console.log('\nAll available types:');
  const allTypes = [
    'Person', 'Organization', 'Place', 'Event', 'Product',
    'Repo', 'Software', 'Category', 'Label',
    'MedicalCondition', 'MedicalDrug', 'MedicalDrugClass',
    'MedicalProcedure', 'MedicalTest', 'MedicalStudy',
    'MedicalDevice', 'MedicalTherapy', 'MedicalGuideline',
    'MedicalIndication', 'MedicalContraindication'
  ];
  console.log(`  Total: ${alllength} types`);
  console.log(`  ${alljoin(', ')}`);
}

await demonstrateEntityTypes();

Last updated

Was this helpful?