A next-generation, web-based ontology engineering platform built with TypeScript, React, and AI assistance.
- β¨ Advanced Axiom Editor with Monaco-powered Manchester Syntax editing
- π³ Hierarchical Visualization with automatic layout and incremental loading
- π Multiple Format Support (Turtle, RDF/XML, OWL/XML, N-Triples)
- π Intelligent Autocomplete with context-aware suggestions
- β Real-time Validation and syntax checking
- π€ Ontology Generation from natural language descriptions
- π‘ Smart Property Recommendations based on class context
- π Axiom Generation from constraints described in plain English
- π― Context-Aware Suggestions throughout the workflow
- π§ Client-Side Reasoning (WebAssembly) for instant feedback
- π§ Inconsistency Detection with detailed explanations
- π οΈ Automated Repair Wizard for fixing logical errors
- π Inference Visualization showing derived knowledge
- π¨ Modern UI with dark/light themes
- β¨οΈ Keyboard Shortcuts for power users
- π― Command Palette (β+K) for quick access
- π± Responsive Design for various screen sizes
- βΏ Accessibility (WCAG 2.1 Level AA)
- Frontend: Next.js 16, React 19, TypeScript 5
- Styling: Tailwind CSS, Shadcn/ui, Radix UI
- State Management: React Context API
- Ontology Logic: Custom HermiT-inspired reasoner
- Testing: Jest, React Testing Library, ts-jest
- Form Handling: React Hook Form, Zod
- Charts: Recharts
- Icons: Lucide React
- Node.js 18+ and npm 9+
- Modern browser (Chrome 86+, Firefox 82+, Safari 14+, Edge 86+)
# Clone the repository
git clone https://github.com/yourusername/modern-ontology-editor.git
cd modern-ontology-editor
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your API keys
# Run development server
npm run dev
# Open http://localhost:3000# Create production build
npm run build
# Start production server
npm start- Open the application in your browser
- Click "New Ontology" or press
Ctrl+N - Enter basic information:
- Name: "MyOntology"
- Base IRI: "http://example.org/myontology#"
- Start adding classes:
- Right-click in the class tree
- Select "Add Class"
- Enter class name (e.g., "Person")
- Define properties:
- Select your class
- Click "Add Property" in the properties panel
- Choose Object Property or Data Property
- Use AI assistance (optional):
- Press
β+K(orCtrl+K) - Type "Generate ontology structure"
- Describe your domain
- Review and accept suggestions
- Press
# Supported formats:
- Turtle (.ttl)
- RDF/XML (.rdf, .owl)
- OWL/XML (.owl)
- N-Triples (.nt)- Click "Import" or press
Ctrl+O - Select your ontology file
- Wait for parsing (progress shown for large files)
- Review import summary
- Start editing!
- User Guide - Complete user documentation
- Tutorial - Step-by-step learning path
- API Reference - Developer documentation
- Architecture - System design and structure
- Contributing - How to contribute
- FAQ- Frequently asked questions
Development Progress:
- Sprint 0: Project Setup β
- Sprint 1: Core Infrastructure (In Progress)
- Sprint 2: Ontology Management
- Sprint 3: Axiom Editor
- Sprint 4: Graph Visualization
- Sprint 5-12: Advanced Features
See Project Board for detailed progress.
Version 1.0 (6 months)
- Complete ontology editing capabilities
- AI-assisted development
- Client-side reasoning
- Visualization with incremental loading
Version 2.0 (Future)
- Real-time collaboration
- Version control integration
- Mobile applications
- Advanced reasoning features
- Plugin system
We welcome contributions! Please see CONTRIBUTING.md for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
# Install dependencies
npm install
# Run development server
npm run dev
# Run tests
npm test
# Run linting
npm run lint
# Run type checking
npm run type-check
# Run all checks before committing
npm run validateLogic-focused unit testing with Jest and TypeScript. Tests concentrate on business logic, algorithms, and data transformations.
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # With coverage
npm run test:ci # CI mode- 130 tests passing in ~1.3 seconds
- 6 test suites covering core logic modules
- 95%+ coverage on tested modules
- βοΈ Ontology reasoning - Consistency, inference, validation
- π Data serialization - JSON-LD, Turtle, OWL/XML
- π State management - Context operations, CRUD
- ποΈ Data generation - Sample data, validation
- πͺ React hooks - Toast management, lifecycle
- π οΈ Utilities - Helper functions
describe('HermiTReasoner', () => {
it('should detect circular dependencies', () => {
const ontology = createOntologyWithCircularRefs()
const reasoner = new HermiTReasoner(ontology)
const result = reasoner.reason()
expect(result.errors).toContainEqual(expect.objectContaining({ type: 'circular' }))
})
})See TESTING.md for detailed documentation.
| Script | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Create production build |
npm start |
Start production server |
npm test |
Run unit tests |
npm run test:watch |
Run tests in watch mode |
npm run test:coverage |
Run tests with coverage report |
npm run test:ci |
Run tests in CI mode |
npm run lint |
Run ESLint |
npm run lint:fix |
Auto-fix linting issues |
npm run format |
Format code with Prettier |
npm run type-check |
Run TypeScript type checking |
npm run validate |
Run all checks (type + lint + format + test) |
Professional code quality setup with ESLint 9 and Prettier.
npm run lint # Check for issues
npm run lint:fix # Auto-fix issues
npm run format # Format code
npm run validate # Run all checks- β ESLint 9 with flat config format
- β TypeScript strict rules
- β React and hooks enforcement
- β Prettier with Tailwind CSS class sorting
- β Accessibility rules (jsx-a11y)
- β Auto-fix for most issues
- β Magic-number warnings for constants outside of lib/constants.ts
- eslint.config.mjs - ESLint configuration
- .prettierrc - Prettier formatting rules
- LINTING.md - Complete documentation
See LINTING.md for detailed configuration and IDE setup.
Found a bug or have a feature request? Please open an issue!
This project is licensed under the MIT License - see the LICENSE file for details.
-
Ale - @aadorian - Project Lead & Core Developer
- Project architecture and leadership
- Cursor AI development environment configuration
- Comprehensive development guidelines documentation
- Hydration error fixes and core improvements
- Fixed individuals tab runtime error
- Removed Vercel Analytics component to prevent script loading errors
-
ParthP511 - @ParthP511
- Comprehensive inline documentation comments
- Documented reasoning logic in core modules
- URL copy functionality with toast notifications
- Header component testing
- Modal dialogs for selected graph nodes (class, property, individual details)
- Copy to clipboard hook implementation
- ESLint magic numbers rule enforcement
- Test suite fixes for file parsing issues
- Success and failure message notifications for operations
-
charulata871 - @charulata871
- Code refactoring and improved variable naming
- ClassDetails component refactoring
- Enhanced code quality and maintainability
- Debug logging implementation
- Type safety improvements with explicit return type annotations
- Troubleshooting documentation for common setup issues
-
SIVA - @NANI-31
- Enhanced graph visualization with zoom controls
- Drag-and-drop file import implementation
- Breadcrumb navigation implementation
- Copy IRI button for entity cards
- Class tree search functionality
-
mostafakm78 - @mostafakm78
- Performance optimization with component memoization
- Ontology list item component improvements
-
sojukrishna - @sojukrishna
- Input validation for IRI format in NewEntityDialog
-
Anoop-2024si96509 - @Anoop-2024si96509
- Inline code comments for complex algorithms
-
Vineeth Wilson - @VineethWilson
- Last modified timestamp tracking for statistics
-
Tim - @TimmyByDay
- Comprehensive JSDoc documentation for utility functions
-
EvanPerezJ - @EvanPerezJ
- Expand/collapse toggle for class tree
-
Ronit Reddy - @ronitvoila
- Inverse property selection UI implementation
-
Umer Jahangir - @Umer-Jahangir
- Console.log cleanup for production components
See CONTRIBUTORS.md for the complete list and detailed contribution information.
- Protege - Inspiration for ontology editing
- Monaco Editor - Code editing
- React Flow - Graph visualization
- N3.js - RDF parsing
- Vercel - Deployment platform
- Shadcn/ui - UI components
- Project Lead: [your.email@example.com]
- Documentation: [docs.example.com]
- Community: [Discord/Slack invite link]
- Twitter: [@ontology_editor]
If you find this project useful, please consider giving it a star! β
Made with β€οΈ by the Modern Ontology Editor Team
