DragonFire Semantic Network Integration Examples
Explore practical examples of integrating the DragonFire Semantic Network into various application types, from web and mobile apps to server-side systems and IoT devices.
Overview
These integration examples demonstrate how to effectively implement the DragonFire Semantic Network across different platforms and use cases. Each example includes code samples, architectural considerations, and best practices for optimal implementation.
Integration Requirements
- DragonFire SDK: Appropriate SDK for your platform (JavaScript, Python, Java, etc.)
- API Access: Valid API key from the Developer Dashboard
- Network Access: Connection to DragonFire services
- Understanding: Familiarity with the Semantic Network concepts
Web Application Integration
This example demonstrates integrating DragonFire into a modern React web application:
// Install SDK // npm install @dragonfire/client // Initialize in your application import { DragonFireClient } from '@dragonfire/client'; // Create client instance const dragonfire = new DragonFireClient({ endpoint: 'api.dragonfire1.com', region: 'us-east', timeSync: true }); // Initialize at app startup async function initializeDragonFire() { try { await dragonfire.initialize(); console.log('DragonFire client initialized'); return true; } catch (error) { console.error('Failed to initialize DragonFire:', error); return false; } }
// User authentication async function authenticateUser(email, password) { try { // Using the user port (100-199) for authentication const authResult = await dragonfire.execute(` AUTHENTICATE(100) .WITH({ email: "${email}", password: "${password}" }) .REMEMBER(true) `); if (authResult.success) { // Store token in secure storage localStorage.setItem('df_auth_token', authResult.token); // Set token for future requests dragonfire.setAuthToken(authResult.token); return { authenticated: true, user: authResult.user }; } } catch (error) { console.error('Authentication error:', error); return { authenticated: false, error }; } }
// Fetch user data async function fetchUserProfile() { try { // Using data operations port (200-299) const profile = await dragonfire.execute(` GET(210) .SELECT("profile") .INCLUDE(["preferences", "history"]) `); return profile; } catch (error) { console.error('Error fetching profile:', error); throw error; } } // Update user preferences async function updatePreferences(preferences) { try { const result = await dragonfire.execute(` UPDATE(210) .SELECT("profile") .SET({ preferences: ${JSON.stringify(preferences)} }) `); return result.success; } catch (error) { console.error('Error updating preferences:', error); throw error; } }
// React Hook for DragonFire integration import { useState, useEffect } from 'react'; import { DragonFireClient } from '@dragonfire/client'; // Custom hook for DragonFire operations export function useDragonFire() { const [client, setClient] = useState(null); const [status, setStatus] = useState('initializing'); const [error, setError] = useState(null); useEffect(() => { const initClient = async () => { try { // Create and initialize client const dragonfire = new DragonFireClient({ endpoint: 'api.dragonfire1.com', region: 'us-east', timeSync: true }); // Restore authentication if available const token = localStorage.getItem('df_auth_token'); if (token) { dragonfire.setAuthToken(token); } // Initialize await dragonfire.initialize(); setClient(dragonfire); setStatus('ready'); } catch (err) { setError(err); setStatus('error'); } }; initClient(); // Cleanup function return () => { if (client) { client.disconnect(); } }; }, []); return { client, status, error, isReady: status === 'ready', execute: async (command) => { if (status !== 'ready') { throw new Error('DragonFire client not ready'); } return client.execute(command); } }; } // Usage in a component function UserProfile() { const { isReady, execute } = useDragonFire(); const [profile, setProfile] = useState(null); useEffect(() => { if (isReady) { // Fetch user profile data execute(` GET(210) .SELECT("profile") .INCLUDE(["preferences"]) `) .then(data => setProfile(data)) .catch(err => console.error('Error fetching profile:', err)); } }, [isReady, execute]); if (!isReady) returnLoading...; if (!profile) returnLoading profile...; return (); }{profile.name}
Email: {profile.email}
execute(` UPDATE(210) .SELECT("profile") .SET({ preferences: ${JSON.stringify(newPrefs)} }) `)} />
Mobile App Integration
This example shows how to integrate DragonFire into a React Native mobile application:
// React Native integration example import React, { useEffect, useState } from 'react'; import { View, Text, Button, AsyncStorage } from 'react-native'; import { DragonFireClient } from '@dragonfire/client-react-native'; // Initialize DragonFire client const dragonfire = new DragonFireClient({ endpoint: 'api.dragonfire1.com', region: 'us-east', offlineSupport: true, // Enable offline capabilities persistentStorage: true // Use AsyncStorage for persistence }); // Main component export default function App() { const [isReady, setIsReady] = useState(false); const [userData, setUserData] = useState(null); useEffect(() => { async function initializeClient() { try { // Restore session if available const token = await AsyncStorage.getItem('df_auth_token'); if (token) { dragonfire.setAuthToken(token); } await dragonfire.initialize(); setIsReady(true); // Register for sync events dragonfire.on('sync-complete', () => { console.log('Data synchronized with server'); }); // Load user data if authenticated if (dragonfire.isAuthenticated()) { loadUserData(); } } catch (error) { console.error('Initialization error:', error); } } initializeClient(); }, []); async function loadUserData() { try { const userData = await dragonfire.execute(` GET(210) .SELECT("profile") .INCLUDE(["preferences"]) `); setUserData(userData); } catch (error) { console.error('Error loading user data:', error); } } async function handleLogin() { try { // Show login UI and get credentials const { email, password } = await showLoginUI(); const authResult = await dragonfire.execute(` AUTHENTICATE(100) .WITH({ email: "${email}", password: "${password}" }) .REMEMBER(true) `); if (authResult.success) { await AsyncStorage.setItem('df_auth_token', authResult.token); await loadUserData(); } } catch (error) { console.error('Login error:', error); } } if (!isReady) { return; } return ( Initializing... {userData ? ( ); }) : ( )} Please log in to continue
Server-Side Integration
This example demonstrates integrating DragonFire into a Node.js server application:
// Node.js server integration const express = require('express'); const { DragonFireClient } = require('@dragonfire/client-node'); const app = express(); app.use(express.json()); // Initialize DragonFire client const dragonfire = new DragonFireClient({ endpoint: 'api.dragonfire1.com', region: 'us-east', serviceKey: process.env.DRAGONFIRE_SERVICE_KEY, highPerformance: true // Enable high-throughput mode }); // Initialize on startup async function initializeServices() { try { await dragonfire.initialize(); console.log('DragonFire services initialized'); } catch (error) { console.error('Failed to initialize DragonFire:', error); process.exit(1); } } // Authentication middleware function requireAuth(req, res, next) { const token = req.headers.authorization?.split(' ')[1]; if (!token) { return res.status(401).json({ error: 'Authentication required' }); } try { // Verify token with DragonFire const verifyResult = dragonfire.execute(` VERIFY(100) .TOKEN("${token}") `); if (verifyResult.valid) { req.user = verifyResult.user; next(); } else { res.status(401).json({ error: 'Invalid token' }); } } catch (error) { res.status(500).json({ error: 'Authentication error' }); } } // API routes app.get('/api/user/profile', requireAuth, async (req, res) => { try { const userId = req.user.id; const profile = await dragonfire.execute(` GET(210) .SELECT("profile") .WHERE(id = "${userId}") .INCLUDE(["preferences", "settings"]) `); res.json(profile); } catch (error) { res.status(500).json({ error: 'Failed to fetch profile' }); } }); app.post('/api/transactions', requireAuth, async (req, res) => { try { const { amount, targetAccount, currency } = req.body; const userId = req.user.id; // Execute financial transaction const result = await dragonfire.execute(` CREATE(300) .TRANSACTION("transfer") .WITH({ userId: "${userId}", amount: ${amount}, currency: "${currency}", targetAccount: "${targetAccount}" }) `); res.json({ success: true, transactionId: result.transactionId }); } catch (error) { res.status(500).json({ error: 'Transaction failed', details: error.message }); } }); // Start server initializeServices().then(() => { app.listen(3000, () => { console.log('Server running on port 3000'); }); });
Financial Application
This example showcases DragonFire integration for a financial application with real-time updates:
// Financial application integration import { DragonFireClient } from '@dragonfire/client'; import { setupRealTimeUpdates } from '@dragonfire/realtime'; class FinancialAppService { constructor() { this.dragonfire = new DragonFireClient({ endpoint: 'api.dragonfire1.com', region: 'us-east', timeSync: true }); this.subscriptions = []; } async initialize(authToken) { try { // Set authentication token this.dragonfire.setAuthToken(authToken); // Initialize the client await this.dragonfire.initialize(); // Setup real-time updates this.realtime = setupRealTimeUpdates(this.dragonfire); console.log('Financial service initialized'); return true; } catch (error) { console.error('Initialization error:', error); return false; } } // Get account balances async getAccountBalances() { return this.dragonfire.execute(` GET(300) .BALANCES() .FORMAT("DETAILED") `); } // Get recent transactions async getRecentTransactions(days = 30) { return this.dragonfire.execute(` GET(300) .TRANSACTIONS() .FILTER(date > now().subtract(days, "days")) .SORT(date DESC) .LIMIT(100) `); } // Create a transfer async createTransfer(sourceAccount, targetAccount, amount, description) { return this.dragonfire.execute(` CREATE(300) .TRANSACTION("transfer") .WITH({ sourceAccount: "${sourceAccount}", targetAccount: "${targetAccount}", amount: ${amount}, description: "${description}" }) `); } // Subscribe to balance updates subscribeToBalanceUpdates(accountId, callback) { const subscription = this.realtime.subscribe({ port: 300, event: "BALANCE_CHANGED", filter: `accountId = "${accountId}"`, callback: (data) => { callback({ accountId: data.accountId, newBalance: data.balance, change: data.change, timestamp: data.timestamp }); } }); this.subscriptions.push(subscription); return subscription.id; } // Subscribe to transaction alerts subscribeToTransactionAlerts(threshold, callback) { const subscription = this.realtime.subscribe({ port: 300, event: "TRANSACTION_CREATED", filter: `amount > ${threshold}`, callback: (data) => { callback({ transactionId: data.id, amount: data.amount, type: data.type, timestamp: data.timestamp }); } }); this.subscriptions.push(subscription); return subscription.id; } // Clean up subscriptions cleanup() { this.subscriptions.forEach(sub => { this.realtime.unsubscribe(sub.id); }); this.subscriptions = []; this.dragonfire.disconnect(); } } // Usage example async function setupFinancialApp() { const financialService = new FinancialAppService(); await financialService.initialize(userToken); // Get account data const balances = await financialService.getAccountBalances(); const transactions = await financialService.getRecentTransactions(); // Update UI with data updateBalancesUI(balances); updateTransactionsUI(transactions); // Setup real-time updates financialService.subscribeToBalanceUpdates("primary-account", (update) => { // Update balance display in real-time updateBalanceDisplay(update.accountId, update.newBalance); showBalanceChangeNotification(update.change); }); // Setup large transaction alerts financialService.subscribeToTransactionAlerts(1000, (alert) => { showLargeTransactionAlert(alert); }); // Clean up on page unload window.addEventListener('beforeunload', () => { financialService.cleanup(); }); }
AI System Integration
This example demonstrates using DragonFire's knowledge operations for AI integration:
// AI system integration import { DragonFireClient } from '@dragonfire/client'; import { VectorUtils } from '@dragonfire/vector'; class AIAssistantService { constructor() { this.dragonfire = new DragonFireClient({ endpoint: 'api.dragonfire1.com', region: 'us-east', timeSync: true }); this.vectorUtils = new VectorUtils(); } async initialize(apiKey) { try { this.dragonfire.setApiKey(apiKey); await this.dragonfire.initialize(); console.log('AI Assistant service initialized'); return true; } catch (error) { console.error('Initialization error:', error); return false; } } // Convert text to embedding vector async textToVector(text) { return this.dragonfire.execute(` COMPUTE(500) .EMBEDDING("${text}") .MODEL("semantic-v2") .DIMENSIONS(1536) `); } // Find similar content async findSimilarContent(queryVector, collectionName, limit = 5) { return this.dragonfire.execute(` SEARCH(500) .COLLECTION("${collectionName}") .VECTOR(${JSON.stringify(queryVector)}) .LIMIT(${limit}) .THRESHOLD(0.75) `); } // Generate response async generateResponse(prompt, context = [], options = {}) { const defaultOptions = { maxTokens: 500, temperature: 0.7, topP: 0.95 }; const mergedOptions = { ...defaultOptions, ...options }; return this.dragonfire.execute(` GENERATE(500) .TEXT() .FROM("${prompt}") .WITH_CONTEXT(${JSON.stringify(context)}) .MAX_TOKENS(${mergedOptions.maxTokens}) .TEMPERATURE(${mergedOptions.temperature}) .TOP_P(${mergedOptions.topP}) `); } // Store knowledge async storeKnowledge(collection, documents) { // Process documents in batches const batches = this.vectorUtils.batchDocuments(documents, 10); for (const batch of batches) { await this.dragonfire.execute(` STORE(500) .COLLECTION("${collection}") .DOCUMENTS(${JSON.stringify(batch)}) .WITH_EMBEDDINGS(true) `); } return { success: true, count: documents.length }; } // Process conversation async processConversation(userMessage, conversationHistory) { try { // Convert message to vector for semantic search const messageVector = await this.textToVector(userMessage); // Find relevant information const relevantInfo = await this.findSimilarContent( messageVector, "knowledge-base" ); // Prepare context for generation const context = relevantInfo.map(item => item.content); // Generate response const response = await this.generateResponse( userMessage, context, { temperature: 0.8 } ); return { response: response.text, sources: relevantInfo.map(item => item.metadata), confidence: response.confidence }; } catch (error) { console.error('Error processing conversation:', error); throw error; } } } // Usage example async function setupAIAssistant() { const assistant = new AIAssistantService(); await assistant.initialize(API_KEY); // Handle user message document.getElementById('send-button').addEventListener('click', async () => { const userMessage = document.getElementById('user-input').value; const conversationHistory = getConversationHistory(); // Display user message addMessageToChat('user', userMessage); // Show typing indicator showTypingIndicator(); try { // Process with AI const result = await assistant.processConversation( userMessage, conversationHistory ); // Hide typing indicator hideTypingIndicator(); // Display assistant response addMessageToChat('assistant', result.response); // Add sources if available if (result.sources && result.sources.length > 0) { displaySources(result.sources); } } catch (error) { hideTypingIndicator(); addMessageToChat('system', 'Sorry, I encountered an error processing your request.'); } }); }
IoT Integration
This example demonstrates integrating DragonFire with IoT devices:
// IoT integration example - Node.js const { DragonFireIoTClient } = require('@dragonfire/iot-client'); const { SensorDataCollector } = require('./sensors'); // Create IoT-optimized client const dragonfire = new DragonFireIoTClient({ endpoint: 'iot.dragonfire1.com', region: 'us-east', deviceId: process.env.DEVICE_ID, deviceKey: process.env.DEVICE_KEY, connectionOptions: { // Optimized for low-bandwidth, intermittent connections compressionLevel: 'maximum', batchSize: 50, maxRetries: 10, retryInterval: 5000 } }); // Initialize sensor collection const sensorCollector = new SensorDataCollector({ temperature: true, humidity: true, motion: true, light: true, sampleRate: 60000 // 1 minute }); // Setup connection with backoff retry async function connectWithRetry(maxAttempts = 10) { let attempts = 0; while (attempts < maxAttempts) { try { console.log(`Connection attempt ${attempts + 1}...`); await dragonfire.connect(); console.log('Connected to DragonFire IoT service'); return true; } catch (error) { attempts++; const delay = Math.min(30000, Math.pow(2, attempts) * 1000); console.log(`Connection failed, retrying in ${delay / 1000}s...`); await new Promise(resolve => setTimeout(resolve, delay)); } } console.error('Failed to connect after maximum attempts'); return false; } // Initialize the system async function initialize() { try { // Connect to DragonFire const connected = await connectWithRetry(); if (!connected) { console.error('Unable to establish connection. Running in offline mode.'); } // Start sensor collection sensorCollector.start(); // Register for device commands dragonfire.on('command', handleDeviceCommand); // Set up data transmission setInterval(transmitSensorData, 60000); // Report device status await reportDeviceStatus('online'); } catch (error) { console.error('Initialization error:', error); } } // Transmit collected sensor data async function transmitSensorData() { try { const sensorData = sensorCollector.getCollectedData(); if (sensorData.length === 0) { return; } // Use the Storage port (400-499) for IoT data await dragonfire.execute(` STORE(400) .DATA("sensors") .BATCH(${JSON.stringify(sensorData)}) .WITH_TIMESTAMP(true) .DEVICE_ID("${process.env.DEVICE_ID}") `); // Clear transmitted data sensorCollector.clearCollectedData(); console.log(`Transmitted ${sensorData.length} sensor readings`); } catch (error) { console.error('Error transmitting sensor data:', error); // Store data locally if transmission fails sensorCollector.storeLocally(); } } // Handle device commands from DragonFire function handleDeviceCommand(command) { console.log('Received command:', command); switch (command.action) { case 'restart': console.log('Restarting device...'); setTimeout(() => process.exit(0), 1000); break; case 'configure': console.log('Updating configuration...'); updateDeviceConfiguration(command.config); break; case 'update_sampling': console.log('Updating sampling rate...'); sensorCollector.updateSampleRate(command.rate); break; default: console.log('Unknown command:', command); } } // Report device status async function reportDeviceStatus(status) { try { await dragonfire.execute(` UPDATE(400) .DEVICE("${process.env.DEVICE_ID}") .STATUS("${status}") .WITH({ battery: ${sensorCollector.getBatteryLevel()}, firmware: "${process.env.FIRMWARE_VERSION}", uptime: ${process.uptime()} }) `); } catch (error) { console.error('Error reporting device status:', error); } } // Start the system initialize();