Enrich Knowledge Graph with External Data
User Intent
Operation
Prerequisites
Enrichment Strategies
1. External API Enrichment
import { Graphlit } from 'graphlit-client';
import { ObservableTypes } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Get person entity
const people = await graphlit.queryObservables({
filter: { types: [ObservableTypes.Person] }
});
// Enrich with LinkedIn data (example)
for (const person of people.observables.results.slice(0, 5)) {
const email = person.observable.properties?.email;
if (email) {
// Call external LinkedIn API (pseudocode)
const linkedInData = await fetchLinkedInData(email);
// Store enriched data
const enrichedPerson = {
...person.observable,
properties: {
...person.observable.properties,
linkedInUrl: linkedInData.profileUrl,
currentTitle: linkedInData.currentPosition?.title,
currentCompany: linkedInData.currentPosition?.company,
skills: linkedInData.skills,
enrichedAt: new Date().toISOString()
}
};
console.log(`Enriched ${person.observable.name}:`);
console.log(` Title: ${enrichedPerson.properties.currentTitle}`);
console.log(` Company: ${enrichedPerson.properties.currentCompany}`);
}
}
async function fetchLinkedInData(email: string): Promise<any> {
// External API call (example)
// In production, use actual LinkedIn API or similar service
return {
profileUrl: `https://linkedin.com/in/${email.split('@')[0]}`,
currentPosition: {
title: "CEO",
company: "Graphlit"
},
skills: ["AI", "Knowledge Graphs", "Semantic Memory"]
};
}2. Workflow-Based Enrichment
3. Internal Data Enrichment
4. Geographic Enrichment
Enrichment Patterns
Pattern 1: Batch Enrichment
Pattern 2: On-Demand Enrichment
Pattern 3: Periodic Refresh
Storage Considerations
Common External Data Sources
Person Enrichment
Organization Enrichment
Place Enrichment
Developer Hints
Last updated