diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 00000000..e095df99
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,148 @@
+name: Build and Deploy Documentation
+
+on:
+ push:
+ branches: [ main, develop ]
+ paths: [ 'docs/**', 'semanticore/**', 'README.md', 'pyproject.toml' ]
+ pull_request:
+ branches: [ main ]
+ paths: [ 'docs/**', 'semanticore/**', 'README.md', 'pyproject.toml' ]
+ workflow_dispatch:
+
+jobs:
+ build-docs:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.11'
+ cache: 'pip'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -e ".[docs,dev]"
+ pip install sphinx-rtd-theme sphinx-copybutton sphinx-tabs
+
+ - name: Build documentation
+ run: |
+ cd docs
+ make html
+ make linkcheck
+
+ - name: Upload documentation artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: documentation
+ path: docs/_build/html/
+
+ deploy-docs:
+ needs: build-docs
+ runs-on: ubuntu-latest
+ if: github.ref == 'refs/heads/main'
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Download documentation artifacts
+ uses: actions/download-artifact@v3
+ with:
+ name: documentation
+ path: docs/_build/html/
+
+ - name: Deploy to GitHub Pages
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./docs/_build/html
+ cname: semanticore.readthedocs.io
+
+ test-docs:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.11'
+ cache: 'pip'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -e ".[docs,dev]"
+ pip install sphinx-rtd-theme sphinx-copybutton sphinx-tabs
+
+ - name: Test documentation build
+ run: |
+ cd docs
+ make html
+ make linkcheck
+ make doctest
+
+ - name: Check for broken links
+ run: |
+ cd docs
+ make linkcheck 2>&1 | tee linkcheck.log
+ if grep -q "broken" linkcheck.log; then
+ echo "Broken links found in documentation"
+ cat linkcheck.log
+ exit 1
+ fi
+
+ lint-docs:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.11'
+ cache: 'pip'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install doc8 sphinx-lint
+
+ - name: Lint documentation
+ run: |
+ doc8 docs/
+ sphinx-lint docs/
+
+ spell-check:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.11'
+ cache: 'pip'
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install sphinxcontrib-spelling
+
+ - name: Spell check documentation
+ run: |
+ cd docs
+ make spelling
\ No newline at end of file
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 00000000..90c16221
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,115 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS ?=
+SPHINXBUILD ?= sphinx-build
+SOURCEDIR = .
+BUILDDIR = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+# Custom targets for SemantiCore documentation
+
+# Build all documentation formats
+all: html pdf epub
+
+# Build HTML documentation
+html:
+ @echo "Building HTML documentation..."
+ @$(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O)
+ @echo "HTML documentation built in $(BUILDDIR)/html/"
+
+# Build PDF documentation
+pdf:
+ @echo "Building PDF documentation..."
+ @$(SPHINXBUILD) -b latex "$(SOURCEDIR)" "$(BUILDDIR)/latex" $(SPHINXOPTS) $(O)
+ @echo "Running LaTeX..."
+ $(MAKE) -C "$(BUILDDIR)/latex" all-pdf
+ @echo "PDF documentation built in $(BUILDDIR)/latex/"
+
+# Build EPUB documentation
+epub:
+ @echo "Building EPUB documentation..."
+ @$(SPHINXBUILD) -b epub "$(SOURCEDIR)" "$(BUILDDIR)/epub" $(SPHINXOPTS) $(O)
+ @echo "EPUB documentation built in $(BUILDDIR)/epub/"
+
+# Clean build directory
+clean:
+ @echo "Cleaning build directory..."
+ rm -rf "$(BUILDDIR)"
+ @echo "Build directory cleaned."
+
+# Check for broken links
+linkcheck:
+ @echo "Checking for broken links..."
+ @$(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)/linkcheck" $(SPHINXOPTS) $(O)
+ @echo "Link check completed."
+
+# Run doctests
+doctest:
+ @echo "Running doctests..."
+ @$(SPHINXBUILD) -b doctest "$(SOURCEDIR)" "$(BUILDDIR)/doctest" $(SPHINXOPTS) $(O)
+ @echo "Doctests completed."
+
+# Spell check
+spelling:
+ @echo "Running spell check..."
+ @$(SPHINXBUILD) -b spelling "$(SOURCEDIR)" "$(BUILDDIR)/spelling" $(SPHINXOPTS) $(O)
+ @echo "Spell check completed."
+
+# Serve documentation locally
+serve:
+ @echo "Starting local documentation server..."
+ @cd "$(BUILDDIR)/html" && python -m http.server 8000
+ @echo "Documentation available at http://localhost:8000"
+
+# Build and serve
+dev: html serve
+
+# Full documentation build with all checks
+full: clean html linkcheck doctest
+ @echo "Full documentation build completed."
+
+# Install dependencies for documentation
+install-deps:
+ @echo "Installing documentation dependencies..."
+ pip install sphinx sphinx-rtd-theme sphinx-copybutton sphinx-tabs myst-parser
+ pip install sphinxcontrib-spelling doc8 sphinx-lint
+ @echo "Documentation dependencies installed."
+
+# Generate API documentation
+api:
+ @echo "Generating API documentation..."
+ sphinx-apidoc -o api ../semanticore --force --module-first --no-toc
+ @echo "API documentation generated."
+
+# Update all documentation
+update: api html
+ @echo "Documentation updated."
+
+# Deploy to GitHub Pages (requires gh-pages branch)
+deploy: html
+ @echo "Deploying to GitHub Pages..."
+ @if [ -d "$(BUILDDIR)/html" ]; then \
+ git checkout gh-pages; \
+ cp -r "$(BUILDDIR)/html/"* .; \
+ git add .; \
+ git commit -m "Update documentation"; \
+ git push origin gh-pages; \
+ git checkout main; \
+ echo "Documentation deployed to GitHub Pages."; \
+ else \
+ echo "Error: HTML documentation not found. Run 'make html' first."; \
+ exit 1; \
+ fi
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 00000000..3f691389
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,362 @@
+# SemantiCore Documentation
+
+This directory contains the complete documentation for SemantiCore, built using Sphinx.
+
+## ๐ Directory Structure
+
+```
+docs/
+โโโ conf.py # Sphinx configuration
+โโโ index.rst # Main documentation index
+โโโ getting_started.rst # Getting started guide
+โโโ examples.rst # Comprehensive examples
+โโโ api/ # API documentation
+โ โโโ index.rst # API reference index
+โโโ tutorials/ # Tutorial guides
+โโโ examples/ # Code examples
+โโโ _static/ # Static assets
+โ โโโ css/ # Custom CSS
+โ โ โโโ custom.css
+โ โโโ js/ # Custom JavaScript
+โ โโโ custom.js
+โโโ _templates/ # Custom templates
+โโโ Makefile # Build commands
+โโโ README.md # This file
+```
+
+## ๐ Quick Start
+
+### Prerequisites
+
+- Python 3.8+
+- pip
+
+### Installation
+
+1. **Install documentation dependencies:**
+ ```bash
+ pip install -e ".[docs]"
+ ```
+
+2. **Or install manually:**
+ ```bash
+ pip install sphinx sphinx-rtd-theme sphinx-copybutton sphinx-tabs myst-parser
+ ```
+
+### Building Documentation
+
+1. **Build HTML documentation:**
+ ```bash
+ cd docs
+ make html
+ ```
+
+2. **Serve locally:**
+ ```bash
+ make serve
+ ```
+
+3. **Build all formats:**
+ ```bash
+ make all
+ ```
+
+## ๐ Available Commands
+
+### Basic Commands
+
+- `make html` - Build HTML documentation
+- `make pdf` - Build PDF documentation
+- `make epub` - Build EPUB documentation
+- `make clean` - Clean build directory
+
+### Quality Checks
+
+- `make linkcheck` - Check for broken links
+- `make doctest` - Run doctests
+- `make spelling` - Spell check documentation
+
+### Development
+
+- `make serve` - Serve documentation locally
+- `make dev` - Build and serve (development)
+- `make full` - Full build with all checks
+
+### Advanced
+
+- `make install-deps` - Install documentation dependencies
+- `make api` - Generate API documentation
+- `make update` - Update all documentation
+- `make deploy` - Deploy to GitHub Pages
+
+## ๐จ Customization
+
+### CSS Customization
+
+Edit `_static/css/custom.css` to customize the appearance:
+
+```css
+:root {
+ --semanticore-primary: #2980B9;
+ --semanticore-secondary: #27AE60;
+ --semanticore-accent: #8E44AD;
+}
+```
+
+### JavaScript Customization
+
+Edit `_static/js/custom.js` to add interactive features:
+
+```javascript
+// Add custom functionality
+document.addEventListener('DOMContentLoaded', function() {
+ // Your custom code here
+});
+```
+
+### Theme Configuration
+
+Modify `conf.py` to change theme options:
+
+```python
+html_theme_options = {
+ 'navigation_depth': 4,
+ 'titles_only': False,
+ 'collapse_navigation': False,
+ 'sticky_navigation': True,
+}
+```
+
+## ๐ Writing Documentation
+
+### RST Files
+
+Use reStructuredText (RST) for documentation:
+
+```rst
+Title
+=====
+
+Section
+--------
+
+Subsection
+~~~~~~~~~~
+
+.. code-block:: python
+
+ def example():
+ return "Hello, World!"
+
+.. note::
+
+ This is a note.
+
+.. warning::
+
+ This is a warning.
+```
+
+### Markdown Files
+
+Use MyST Markdown for simpler syntax:
+
+```markdown
+# Title
+
+## Section
+
+### Subsection
+
+```python
+def example():
+ return "Hello, World!"
+```
+
+::: note
+This is a note.
+:::
+
+::: warning
+This is a warning.
+:::
+```
+
+### Code Examples
+
+Include code examples with syntax highlighting:
+
+```rst
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ core = SemantiCore()
+ result = core.process_document("document.pdf")
+```
+
+### API Documentation
+
+Use autodoc for automatic API documentation:
+
+```rst
+.. automodule:: semanticore.core.engine
+ :members:
+ :undoc-members:
+ :show-inheritance:
+```
+
+## ๐ง Configuration
+
+### Sphinx Configuration
+
+Key settings in `conf.py`:
+
+- **Extensions**: List of Sphinx extensions
+- **Theme**: Read the Docs theme
+- **Static files**: CSS and JavaScript
+- **Intersphinx**: Links to other documentation
+
+### Build Configuration
+
+Environment variables:
+
+```bash
+export SPHINXOPTS="-W --keep-going"
+export SPHINXBUILD=sphinx-build
+```
+
+## ๐ Deployment
+
+### GitHub Pages
+
+1. **Automatic deployment** (via GitHub Actions):
+ - Push to `main` branch
+ - Documentation builds automatically
+ - Deployed to `gh-pages` branch
+
+2. **Manual deployment**:
+ ```bash
+ make deploy
+ ```
+
+### Read the Docs
+
+1. Connect repository to Read the Docs
+2. Documentation builds automatically
+3. Available at `https://semanticore.readthedocs.io`
+
+## ๐งช Testing
+
+### Link Checking
+
+```bash
+make linkcheck
+```
+
+### Spell Checking
+
+```bash
+make spelling
+```
+
+### Doctests
+
+```bash
+make doctest
+```
+
+### Full Test Suite
+
+```bash
+make full
+```
+
+## ๐ Analytics
+
+The documentation includes Google Analytics 4 tracking:
+
+- Page views
+- User engagement
+- Performance metrics
+
+Configure in `_static/js/custom.js`:
+
+```javascript
+gtag('config', 'G-XXXXXXXXXX'); // Replace with actual GA4 ID
+```
+
+## ๐ค Contributing
+
+### Adding New Documentation
+
+1. Create new RST or MD file
+2. Add to appropriate toctree
+3. Follow style guidelines
+4. Test locally before submitting
+
+### Style Guidelines
+
+- Use clear, concise language
+- Include code examples
+- Add appropriate warnings/notes
+- Test all links
+- Spell check content
+
+### Review Process
+
+1. Build documentation locally
+2. Check for broken links
+3. Verify code examples work
+4. Submit pull request
+5. Automated checks run
+6. Manual review by maintainers
+
+## ๐ Troubleshooting
+
+### Common Issues
+
+**Build fails with import errors:**
+```bash
+pip install -e ".[docs]"
+```
+
+**Missing dependencies:**
+```bash
+make install-deps
+```
+
+**Broken links:**
+```bash
+make linkcheck
+```
+
+**Spelling errors:**
+```bash
+make spelling
+```
+
+### Performance Issues
+
+- Use `make clean` before rebuilding
+- Check for large images
+- Optimize CSS/JS files
+- Use appropriate image formats
+
+## ๐ Resources
+
+- [Sphinx Documentation](https://www.sphinx-doc.org/)
+- [Read the Docs Theme](https://sphinx-rtd-theme.readthedocs.io/)
+- [MyST Markdown](https://myst-parser.readthedocs.io/)
+- [reStructuredText](https://docutils.sourceforge.io/rst.html)
+
+## ๐ Support
+
+- **Documentation Issues**: GitHub Issues
+- **Questions**: GitHub Discussions
+- **Community**: Discord Server
+- **Email**: docs@semanticore.io
+
+---
+
+*This documentation is built with โค๏ธ by the SemantiCore community.*
\ No newline at end of file
diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css
new file mode 100644
index 00000000..5883e60b
--- /dev/null
+++ b/docs/_static/css/custom.css
@@ -0,0 +1,331 @@
+/* Custom CSS for SemantiCore Documentation */
+
+/* Custom color scheme */
+:root {
+ --semanticore-primary: #2980B9;
+ --semanticore-secondary: #27AE60;
+ --semanticore-accent: #8E44AD;
+ --semanticore-warning: #F39C12;
+ --semanticore-danger: #E74C3C;
+ --semanticore-light: #ECF0F1;
+ --semanticore-dark: #2C3E50;
+}
+
+/* Header styling */
+.wy-side-nav-search {
+ background-color: var(--semanticore-primary);
+}
+
+.wy-side-nav-search input[type="text"] {
+ border-color: var(--semanticore-primary);
+}
+
+/* Navigation styling */
+.wy-nav-side {
+ background-color: var(--semanticore-dark);
+}
+
+.wy-menu-vertical a {
+ color: #b3b3b3;
+}
+
+.wy-menu-vertical a:hover {
+ background-color: var(--semanticore-primary);
+ color: white;
+}
+
+.wy-menu-vertical li.current > a {
+ background-color: var(--semanticore-primary);
+ color: white;
+}
+
+/* Content styling */
+.wy-nav-content {
+ background-color: white;
+}
+
+.wy-nav-content-wrap {
+ background-color: white;
+}
+
+/* Code blocks */
+.highlight {
+ background-color: #f8f9fa;
+ border: 1px solid #e9ecef;
+ border-radius: 4px;
+ padding: 1rem;
+}
+
+.highlight pre {
+ background-color: transparent;
+ border: none;
+ padding: 0;
+}
+
+/* Copy button styling */
+.copybutton {
+ background-color: var(--semanticore-primary);
+ color: white;
+ border: none;
+ border-radius: 4px;
+ padding: 4px 8px;
+ font-size: 12px;
+ cursor: pointer;
+ transition: background-color 0.3s;
+}
+
+.copybutton:hover {
+ background-color: #1f5f8b;
+}
+
+/* Button styling */
+.btn {
+ display: inline-block;
+ padding: 10px 20px;
+ margin: 5px;
+ text-decoration: none;
+ border-radius: 5px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+}
+
+.btn-primary {
+ background-color: var(--semanticore-primary);
+ color: white;
+}
+
+.btn-primary:hover {
+ background-color: #1f5f8b;
+ color: white;
+ text-decoration: none;
+}
+
+.btn-secondary {
+ background-color: var(--semanticore-secondary);
+ color: white;
+}
+
+.btn-secondary:hover {
+ background-color: #1e8449;
+ color: white;
+ text-decoration: none;
+}
+
+.btn-info {
+ background-color: var(--semanticore-accent);
+ color: white;
+}
+
+.btn-info:hover {
+ background-color: #6c3483;
+ color: white;
+ text-decoration: none;
+}
+
+.btn-dark {
+ background-color: var(--semanticore-dark);
+ color: white;
+}
+
+.btn-dark:hover {
+ background-color: #1a252f;
+ color: white;
+ text-decoration: none;
+}
+
+/* Alert boxes */
+.alert {
+ padding: 15px;
+ margin: 20px 0;
+ border-radius: 5px;
+ border-left: 4px solid;
+}
+
+.alert-info {
+ background-color: #e8f4fd;
+ border-color: var(--semanticore-primary);
+ color: #0c5460;
+}
+
+.alert-success {
+ background-color: #d4edda;
+ border-color: var(--semanticore-secondary);
+ color: #155724;
+}
+
+.alert-warning {
+ background-color: #fff3cd;
+ border-color: var(--semanticore-warning);
+ color: #856404;
+}
+
+.alert-danger {
+ background-color: #f8d7da;
+ border-color: var(--semanticore-danger);
+ color: #721c24;
+}
+
+/* Table styling */
+.wy-table-responsive table {
+ border-collapse: collapse;
+ width: 100%;
+ margin: 1rem 0;
+}
+
+.wy-table-responsive th {
+ background-color: var(--semanticore-primary);
+ color: white;
+ padding: 12px;
+ text-align: left;
+}
+
+.wy-table-responsive td {
+ padding: 12px;
+ border-bottom: 1px solid #e9ecef;
+}
+
+.wy-table-responsive tr:nth-child(even) {
+ background-color: #f8f9fa;
+}
+
+.wy-table-responsive tr:hover {
+ background-color: #e9ecef;
+}
+
+/* Admonition styling */
+.admonition {
+ border-radius: 5px;
+ margin: 1rem 0;
+}
+
+.admonition-title {
+ font-weight: bold;
+ padding: 10px 15px;
+ border-radius: 5px 5px 0 0;
+}
+
+.admonition.note {
+ background-color: #e8f4fd;
+ border-left: 4px solid var(--semanticore-primary);
+}
+
+.admonition.note .admonition-title {
+ background-color: var(--semanticore-primary);
+ color: white;
+}
+
+.admonition.warning {
+ background-color: #fff3cd;
+ border-left: 4px solid var(--semanticore-warning);
+}
+
+.admonition.warning .admonition-title {
+ background-color: var(--semanticore-warning);
+ color: white;
+}
+
+.admonition.tip {
+ background-color: #d4edda;
+ border-left: 4px solid var(--semanticore-secondary);
+}
+
+.admonition.tip .admonition-title {
+ background-color: var(--semanticore-secondary);
+ color: white;
+}
+
+/* Code inline styling */
+code {
+ background-color: #f8f9fa;
+ color: var(--semanticore-primary);
+ padding: 2px 4px;
+ border-radius: 3px;
+ font-size: 0.9em;
+}
+
+/* Footer styling */
+.wy-nav-content footer {
+ background-color: var(--semanticore-dark);
+ color: white;
+ padding: 20px 0;
+ margin-top: 40px;
+ text-align: center;
+}
+
+/* Responsive design */
+@media (max-width: 768px) {
+ .wy-nav-side {
+ width: 100%;
+ position: relative;
+ }
+
+ .wy-nav-content {
+ margin-left: 0;
+ }
+
+ .btn {
+ display: block;
+ margin: 5px 0;
+ text-align: center;
+ }
+}
+
+/* Dark mode support */
+@media (prefers-color-scheme: dark) {
+ .wy-nav-content {
+ background-color: #1a1a1a;
+ color: #e0e0e0;
+ }
+
+ .wy-nav-content-wrap {
+ background-color: #1a1a1a;
+ }
+
+ .highlight {
+ background-color: #2d2d2d;
+ border-color: #404040;
+ }
+
+ code {
+ background-color: #2d2d2d;
+ color: #e0e0e0;
+ }
+}
+
+/* Animation for interactive elements */
+.btn, .copybutton, .wy-menu-vertical a {
+ transition: all 0.3s ease;
+}
+
+/* Custom scrollbar */
+::-webkit-scrollbar {
+ width: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: #f1f1f1;
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--semanticore-primary);
+ border-radius: 4px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: #1f5f8b;
+}
+
+/* Print styles */
+@media print {
+ .wy-nav-side,
+ .wy-nav-content-wrap .wy-nav-content {
+ background: white !important;
+ color: black !important;
+ }
+
+ .btn {
+ border: 1px solid black;
+ background: white !important;
+ color: black !important;
+ }
+}
\ No newline at end of file
diff --git a/docs/_static/js/custom.js b/docs/_static/js/custom.js
new file mode 100644
index 00000000..fc6c1e41
--- /dev/null
+++ b/docs/_static/js/custom.js
@@ -0,0 +1,334 @@
+// Custom JavaScript for SemantiCore Documentation
+
+document.addEventListener('DOMContentLoaded', function() {
+
+ // Initialize copy buttons
+ initializeCopyButtons();
+
+ // Initialize search functionality
+ initializeSearch();
+
+ // Initialize smooth scrolling
+ initializeSmoothScrolling();
+
+ // Initialize code highlighting
+ initializeCodeHighlighting();
+
+ // Initialize mobile menu
+ initializeMobileMenu();
+
+ // Initialize dark mode toggle
+ initializeDarkMode();
+
+ // Initialize analytics
+ initializeAnalytics();
+});
+
+// Copy button functionality
+function initializeCopyButtons() {
+ const copyButtons = document.querySelectorAll('.copybutton');
+
+ copyButtons.forEach(button => {
+ button.addEventListener('click', function() {
+ const codeBlock = this.parentElement.querySelector('pre');
+ const text = codeBlock.textContent;
+
+ navigator.clipboard.writeText(text).then(() => {
+ // Show success message
+ const originalText = this.textContent;
+ this.textContent = 'Copied!';
+ this.style.backgroundColor = '#27AE60';
+
+ setTimeout(() => {
+ this.textContent = originalText;
+ this.style.backgroundColor = '';
+ }, 2000);
+ }).catch(err => {
+ console.error('Failed to copy text: ', err);
+ // Fallback for older browsers
+ fallbackCopyTextToClipboard(text, this);
+ });
+ });
+ });
+}
+
+// Fallback copy function for older browsers
+function fallbackCopyTextToClipboard(text, button) {
+ const textArea = document.createElement('textarea');
+ textArea.value = text;
+ textArea.style.position = 'fixed';
+ textArea.style.left = '-999999px';
+ textArea.style.top = '-999999px';
+ document.body.appendChild(textArea);
+ textArea.focus();
+ textArea.select();
+
+ try {
+ document.execCommand('copy');
+ const originalText = button.textContent;
+ button.textContent = 'Copied!';
+ button.style.backgroundColor = '#27AE60';
+
+ setTimeout(() => {
+ button.textContent = originalText;
+ button.style.backgroundColor = '';
+ }, 2000);
+ } catch (err) {
+ console.error('Fallback: Oops, unable to copy', err);
+ }
+
+ document.body.removeChild(textArea);
+}
+
+// Search functionality
+function initializeSearch() {
+ const searchInput = document.querySelector('.wy-side-nav-search input[type="text"]');
+ if (searchInput) {
+ searchInput.addEventListener('input', function() {
+ const query = this.value.toLowerCase();
+ const menuItems = document.querySelectorAll('.wy-menu-vertical li');
+
+ menuItems.forEach(item => {
+ const link = item.querySelector('a');
+ if (link) {
+ const text = link.textContent.toLowerCase();
+ if (text.includes(query)) {
+ item.style.display = '';
+ } else {
+ item.style.display = 'none';
+ }
+ }
+ });
+ });
+ }
+}
+
+// Smooth scrolling for anchor links
+function initializeSmoothScrolling() {
+ const links = document.querySelectorAll('a[href^="#"]');
+
+ links.forEach(link => {
+ link.addEventListener('click', function(e) {
+ e.preventDefault();
+ const targetId = this.getAttribute('href');
+ const targetElement = document.querySelector(targetId);
+
+ if (targetElement) {
+ targetElement.scrollIntoView({
+ behavior: 'smooth',
+ block: 'start'
+ });
+ }
+ });
+ });
+}
+
+// Code highlighting
+function initializeCodeHighlighting() {
+ // Add line numbers to code blocks
+ const codeBlocks = document.querySelectorAll('pre code');
+
+ codeBlocks.forEach(block => {
+ const lines = block.textContent.split('\n');
+ if (lines.length > 1) {
+ const lineNumbers = document.createElement('div');
+ lineNumbers.className = 'line-numbers';
+
+ lines.forEach((line, index) => {
+ const lineNumber = document.createElement('span');
+ lineNumber.textContent = index + 1;
+ lineNumber.className = 'line-number';
+ lineNumbers.appendChild(lineNumber);
+ });
+
+ block.parentElement.insertBefore(lineNumbers, block);
+ }
+ });
+}
+
+// Mobile menu functionality
+function initializeMobileMenu() {
+ const menuToggle = document.querySelector('.wy-nav-top .wy-menu-toggle');
+ const navSide = document.querySelector('.wy-nav-side');
+
+ if (menuToggle && navSide) {
+ menuToggle.addEventListener('click', function() {
+ navSide.classList.toggle('nav-open');
+ });
+
+ // Close menu when clicking outside
+ document.addEventListener('click', function(e) {
+ if (!navSide.contains(e.target) && !menuToggle.contains(e.target)) {
+ navSide.classList.remove('nav-open');
+ }
+ });
+ }
+}
+
+// Dark mode toggle
+function initializeDarkMode() {
+ const darkModeToggle = document.createElement('button');
+ darkModeToggle.className = 'dark-mode-toggle';
+ darkModeToggle.innerHTML = '๐';
+ darkModeToggle.title = 'Toggle dark mode';
+
+ // Check for saved dark mode preference
+ const darkMode = localStorage.getItem('darkMode');
+ if (darkMode === 'enabled') {
+ document.body.classList.add('dark-mode');
+ darkModeToggle.innerHTML = 'โ๏ธ';
+ }
+
+ darkModeToggle.addEventListener('click', function() {
+ document.body.classList.toggle('dark-mode');
+
+ if (document.body.classList.contains('dark-mode')) {
+ localStorage.setItem('darkMode', 'enabled');
+ this.innerHTML = 'โ๏ธ';
+ } else {
+ localStorage.setItem('darkMode', null);
+ this.innerHTML = '๐';
+ }
+ });
+
+ // Add toggle button to navigation
+ const navTop = document.querySelector('.wy-nav-top');
+ if (navTop) {
+ navTop.appendChild(darkModeToggle);
+ }
+}
+
+// Analytics (Google Analytics 4)
+function initializeAnalytics() {
+ // Only load analytics in production
+ if (window.location.hostname === 'semanticore.readthedocs.io') {
+ // Google Analytics 4
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-XXXXXXXXXX'); // Replace with actual GA4 ID
+
+ // Load Google Analytics script
+ const script = document.createElement('script');
+ script.async = true;
+ script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX'; // Replace with actual GA4 ID
+ document.head.appendChild(script);
+
+ // Track page views
+ gtag('config', 'G-XXXXXXXXXX', {
+ page_title: document.title,
+ page_location: window.location.href
+ });
+ }
+}
+
+// Progress bar for reading
+function initializeProgressBar() {
+ const progressBar = document.createElement('div');
+ progressBar.className = 'reading-progress';
+ progressBar.innerHTML = '
';
+ document.body.appendChild(progressBar);
+
+ window.addEventListener('scroll', function() {
+ const scrollTop = window.pageYOffset;
+ const docHeight = document.body.scrollHeight - window.innerHeight;
+ const scrollPercent = (scrollTop / docHeight) * 100;
+
+ const progressFill = progressBar.querySelector('.progress-fill');
+ progressFill.style.width = scrollPercent + '%';
+ });
+}
+
+// Table of contents highlighting
+function initializeTOCHighlighting() {
+ const headings = document.querySelectorAll('h1, h2, h3, h4, h5, h6');
+ const tocLinks = document.querySelectorAll('.wy-menu-vertical a[href^="#"]');
+
+ window.addEventListener('scroll', function() {
+ let current = '';
+
+ headings.forEach(heading => {
+ const sectionTop = heading.offsetTop;
+ const sectionHeight = heading.clientHeight;
+
+ if (window.pageYOffset >= sectionTop - 200) {
+ current = heading.getAttribute('id');
+ }
+ });
+
+ tocLinks.forEach(link => {
+ link.classList.remove('current');
+ if (link.getAttribute('href') === '#' + current) {
+ link.classList.add('current');
+ }
+ });
+ });
+}
+
+// Keyboard shortcuts
+function initializeKeyboardShortcuts() {
+ document.addEventListener('keydown', function(e) {
+ // Ctrl/Cmd + K for search
+ if ((e.ctrlKey || e.metaKey) && e.key === 'k') {
+ e.preventDefault();
+ const searchInput = document.querySelector('.wy-side-nav-search input[type="text"]');
+ if (searchInput) {
+ searchInput.focus();
+ }
+ }
+
+ // Escape to close mobile menu
+ if (e.key === 'Escape') {
+ const navSide = document.querySelector('.wy-nav-side');
+ if (navSide) {
+ navSide.classList.remove('nav-open');
+ }
+ }
+
+ // Ctrl/Cmd + / for toggle dark mode
+ if ((e.ctrlKey || e.metaKey) && e.key === '/') {
+ e.preventDefault();
+ const darkModeToggle = document.querySelector('.dark-mode-toggle');
+ if (darkModeToggle) {
+ darkModeToggle.click();
+ }
+ }
+ });
+}
+
+// Initialize additional features
+document.addEventListener('DOMContentLoaded', function() {
+ initializeProgressBar();
+ initializeTOCHighlighting();
+ initializeKeyboardShortcuts();
+});
+
+// Performance monitoring
+function initializePerformanceMonitoring() {
+ // Monitor page load time
+ window.addEventListener('load', function() {
+ const loadTime = performance.timing.loadEventEnd - performance.timing.navigationStart;
+ console.log('Page load time:', loadTime + 'ms');
+
+ // Send to analytics if available
+ if (typeof gtag !== 'undefined') {
+ gtag('event', 'timing_complete', {
+ name: 'load',
+ value: loadTime
+ });
+ }
+ });
+
+ // Monitor scroll performance
+ let scrollTimeout;
+ window.addEventListener('scroll', function() {
+ clearTimeout(scrollTimeout);
+ scrollTimeout = setTimeout(function() {
+ // Log scroll events for performance analysis
+ console.log('Scroll event processed');
+ }, 100);
+ });
+}
+
+// Initialize performance monitoring
+initializePerformanceMonitoring();
\ No newline at end of file
diff --git a/docs/api/index.rst b/docs/api/index.rst
new file mode 100644
index 00000000..b589acd6
--- /dev/null
+++ b/docs/api/index.rst
@@ -0,0 +1,256 @@
+API Reference
+=============
+
+Welcome to the SemantiCore API reference. This section provides comprehensive documentation for all SemantiCore modules, classes, and functions.
+
+Core Modules
+------------
+
+.. toctree::
+ :maxdepth: 2
+
+ core
+ processors
+ extraction
+ embeddings
+ knowledge_graph
+ streaming
+ domains
+
+Quick API Overview
+------------------
+
+**Main Entry Point**
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ # Initialize the main engine
+ core = SemantiCore(
+ llm_provider="openai",
+ embedding_model="text-embedding-3-large",
+ vector_store="pinecone",
+ graph_db="neo4j"
+ )
+
+**Document Processing**
+.. code-block:: python
+
+ from semanticore.processors import DocumentProcessor
+
+ processor = DocumentProcessor()
+ result = processor.process("document.pdf")
+
+**Semantic Extraction**
+.. code-block:: python
+
+ from semanticore.extraction import TripleExtractor
+
+ extractor = TripleExtractor()
+ triples = extractor.extract_triples(text)
+
+**Knowledge Graph**
+.. code-block:: python
+
+ from semanticore.knowledge_graph import KnowledgeGraphBuilder
+
+ builder = KnowledgeGraphBuilder()
+ builder.add_triples(triples)
+ builder.build()
+
+**Vector Embeddings**
+.. code-block:: python
+
+ from semanticore.embeddings import SemanticEmbedder
+
+ embedder = SemanticEmbedder()
+ embeddings = embedder.generate_embeddings(documents)
+
+Module Structure
+----------------
+
+.. code-block:: text
+
+ semanticore/
+ โโโ core/ # Core framework
+ โ โโโ engine.py # Main SemantiCore engine
+ โ โโโ config.py # Configuration management
+ โ โโโ exceptions.py # Custom exceptions
+ โ
+ โโโ processors/ # Data processing modules
+ โ โโโ document/ # Document processing
+ โ โโโ web/ # Web content processing
+ โ โโโ structured/ # Structured data processing
+ โ โโโ base.py # Base processor class
+ โ
+ โโโ extraction/ # Semantic extraction
+ โ โโโ entities.py # Entity extraction
+ โ โโโ relationships.py # Relationship extraction
+ โ โโโ triples.py # Triple generation
+ โ
+ โโโ embeddings/ # Embedding generation
+ โ โโโ text_embeddings.py
+ โ โโโ vector_stores.py
+ โ
+ โโโ knowledge_graph/ # Knowledge graph construction
+ โ โโโ builder.py
+ โ โโโ storage.py
+ โ
+ โโโ streaming/ # Real-time processing
+ โ โโโ feed_processor.py
+ โ
+ โโโ domains/ # Domain-specific processors
+ โโโ cybersecurity/
+ โโโ biomedical/
+ โโโ finance/
+
+Configuration
+-------------
+
+SemantiCore can be configured through various methods:
+
+**Environment Variables**
+.. code-block:: bash
+
+ export SEMANTICORE_LLM_PROVIDER=openai
+ export SEMANTICORE_EMBEDDING_MODEL=text-embedding-3-large
+ export SEMANTICORE_VECTOR_STORE=pinecone
+ export SEMANTICORE_GRAPH_DB=neo4j
+
+**Configuration File**
+.. code-block:: yaml
+
+ llm:
+ provider: openai
+ model: gpt-4
+ api_key: ${OPENAI_API_KEY}
+
+ embeddings:
+ model: text-embedding-3-large
+ dimension: 1536
+
+ vector_store:
+ provider: pinecone
+ api_key: ${PINECONE_API_KEY}
+
+ knowledge_graph:
+ provider: neo4j
+ uri: bolt://localhost:7687
+
+**Programmatic Configuration**
+.. code-block:: python
+
+ config = {
+ "llm": {
+ "provider": "openai",
+ "model": "gpt-4",
+ "api_key": "your-api-key"
+ },
+ "embeddings": {
+ "model": "text-embedding-3-large",
+ "dimension": 1536
+ }
+ }
+
+ core = SemantiCore(config=config)
+
+Error Handling
+--------------
+
+SemantiCore provides comprehensive error handling:
+
+.. code-block:: python
+
+ from semanticore.core.exceptions import (
+ SemantiCoreError,
+ ProcessingError,
+ ConfigurationError,
+ ValidationError
+ )
+
+ try:
+ result = core.process_document("document.pdf")
+ except ProcessingError as e:
+ print(f"Processing failed: {e}")
+ except ConfigurationError as e:
+ print(f"Configuration error: {e}")
+ except SemantiCoreError as e:
+ print(f"General error: {e}")
+
+Type Hints
+----------
+
+All SemantiCore functions include comprehensive type hints:
+
+.. code-block:: python
+
+ from typing import List, Dict, Optional, Union
+ from semanticore.core.types import (
+ ProcessedContent,
+ Entity,
+ Triple,
+ Embedding,
+ KnowledgeBase
+ )
+
+ def process_documents(
+ self,
+ sources: List[str],
+ config: Optional[Dict] = None
+ ) -> List[ProcessedContent]:
+ """Process multiple documents."""
+ pass
+
+Performance Considerations
+-------------------------
+
+**Batch Processing**
+.. code-block:: python
+
+ # Process documents in batches for better performance
+ batch_size = 100
+ for i in range(0, len(documents), batch_size):
+ batch = documents[i:i + batch_size]
+ results = core.process_documents(batch)
+
+**Memory Management**
+.. code-block:: python
+
+ # Use generators for large datasets
+ def document_generator():
+ for doc in large_dataset:
+ yield doc
+
+ for result in core.process_documents_stream(document_generator()):
+ process_result(result)
+
+**Parallel Processing**
+.. code-block:: python
+
+ # Enable parallel processing
+ core = SemantiCore(
+ config={
+ "processing": {
+ "max_workers": 4,
+ "batch_size": 50
+ }
+ }
+ )
+
+Best Practices
+--------------
+
+1. **Use appropriate batch sizes** for your hardware
+2. **Handle errors gracefully** with try-catch blocks
+3. **Monitor memory usage** for large datasets
+4. **Use type hints** for better code quality
+5. **Configure logging** for debugging
+6. **Validate inputs** before processing
+7. **Use async/await** for I/O operations
+8. **Cache results** when appropriate
+
+.. raw:: html
+
+
+ ๐ Note: This API reference is generated from the source code. For the most up-to-date information, check the source code or run help() on any SemantiCore object.
+
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 00000000..77ef867b
Binary files /dev/null and b/docs/conf.py differ
diff --git a/docs/examples.rst b/docs/examples.rst
new file mode 100644
index 00000000..47564b99
--- /dev/null
+++ b/docs/examples.rst
@@ -0,0 +1,687 @@
+SemantiCore Examples
+====================
+
+This page provides comprehensive examples of SemantiCore usage across different domains and use cases.
+
+Basic Examples
+--------------
+
+**Simple Document Processing**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ # Initialize SemantiCore
+ core = SemantiCore()
+
+ # Process a single document
+ result = core.process_document("financial_report.pdf")
+
+ print(f"Extracted {len(result.entities)} entities")
+ print(f"Generated {len(result.triples)} triples")
+ print(f"Created {len(result.embeddings)} embeddings")
+
+**Batch Processing Multiple Documents**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ core = SemantiCore()
+
+ # Process multiple documents
+ documents = [
+ "report1.pdf",
+ "report2.docx",
+ "data.json",
+ "https://example.com/article"
+ ]
+
+ results = core.process_documents(documents)
+
+ for doc, result in zip(documents, results):
+ print(f"{doc}: {len(result.entities)} entities, {len(result.triples)} triples")
+
+**Custom Configuration**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ # Initialize with custom configuration
+ core = SemantiCore(
+ llm_provider="openai",
+ embedding_model="text-embedding-3-large",
+ vector_store="pinecone",
+ graph_db="neo4j",
+ config={
+ "processing": {
+ "batch_size": 50,
+ "max_workers": 4,
+ "timeout": 300
+ },
+ "extraction": {
+ "confidence_threshold": 0.8,
+ "include_implicit_relations": True
+ }
+ }
+ )
+
+Document Processing Examples
+---------------------------
+
+**PDF Document with Tables and Images**
+
+.. code-block:: python
+
+ from semanticore.processors.document import PDFProcessor
+
+ # Initialize PDF processor with advanced features
+ pdf_processor = PDFProcessor(
+ extract_tables=True,
+ extract_images=True,
+ extract_metadata=True,
+ preserve_structure=True,
+ ocr_enabled=True
+ )
+
+ # Process PDF
+ result = pdf_processor.process("financial_report.pdf")
+
+ # Access extracted content
+ print(f"Text content: {len(result.text)} characters")
+ print(f"Tables extracted: {len(result.tables)}")
+ print(f"Images extracted: {len(result.images)}")
+ print(f"Metadata: {result.metadata}")
+
+**Office Documents (Word, PowerPoint, Excel)**
+
+.. code-block:: python
+
+ from semanticore.processors.document import (
+ DOCXProcessor, PPTXProcessor, ExcelProcessor
+ )
+
+ # Process Word document
+ docx_processor = DOCXProcessor(extract_comments=True)
+ docx_result = docx_processor.process("document.docx")
+
+ # Process PowerPoint presentation
+ pptx_processor = PPTXProcessor(extract_notes=True)
+ pptx_result = pptx_processor.process("presentation.pptx")
+
+ # Process Excel spreadsheet
+ excel_processor = ExcelProcessor(extract_formulas=True)
+ excel_result = excel_processor.process("data.xlsx")
+
+ # Combine results
+ all_content = docx_result + pptx_result + excel_result
+
+Web Content Processing
+----------------------
+
+**RSS Feed Monitoring**
+
+.. code-block:: python
+
+ from semanticore.processors.web import FeedProcessor
+ import asyncio
+
+ async def monitor_feeds():
+ # Initialize feed processor
+ feed_processor = FeedProcessor(
+ update_interval="5m",
+ deduplicate=True,
+ extract_full_content=True
+ )
+
+ # Subscribe to feeds
+ feeds = [
+ "https://feeds.feedburner.com/TechCrunch",
+ "https://rss.cnn.com/rss/edition.rss",
+ "https://feeds.reuters.com/reuters/topNews"
+ ]
+
+ for feed_url in feeds:
+ feed_processor.subscribe(feed_url, category="news")
+
+ # Process items in real-time
+ async for feed_item in feed_processor.stream():
+ print(f"New item: {feed_item.title}")
+
+ # Extract semantics
+ semantics = core.extract_semantics(feed_item.content)
+ triples = core.generate_triples(semantics)
+
+ # Update knowledge graph
+ knowledge_graph.add_triples(triples)
+
+ # Run the feed monitor
+ asyncio.run(monitor_feeds())
+
+**Web Scraping with Semantic Understanding**
+
+.. code-block:: python
+
+ from semanticore.processors.web import WebProcessor
+
+ # Initialize web processor
+ web_processor = WebProcessor(
+ respect_robots=True,
+ extract_metadata=True,
+ follow_redirects=True,
+ max_depth=3,
+ user_agent="SemantiCore Bot/1.0"
+ )
+
+ # Process web pages
+ urls = [
+ "https://example.com/article1",
+ "https://example.com/article2",
+ "https://example.com/article3"
+ ]
+
+ for url in urls:
+ webpage = web_processor.process_url(url)
+
+ # Extract semantic information
+ semantics = core.extract_semantics(webpage.content)
+ entities = core.extract_entities(webpage.content)
+ triples = core.generate_triples(semantics)
+
+ print(f"URL: {url}")
+ print(f"Entities: {len(entities)}")
+ print(f"Triples: {len(triples)}")
+
+Semantic Extraction Examples
+----------------------------
+
+**Entity and Relationship Extraction**
+
+.. code-block:: python
+
+ from semanticore.extraction import EntityExtractor, RelationshipExtractor
+
+ # Initialize extractors
+ entity_extractor = EntityExtractor(
+ model="en_core_web_sm",
+ entity_types=["PERSON", "ORG", "GPE", "DATE", "MONEY"]
+ )
+
+ relationship_extractor = RelationshipExtractor(
+ confidence_threshold=0.7,
+ include_implicit_relations=True
+ )
+
+ # Extract entities and relationships
+ text = """
+ Apple Inc. was founded by Steve Jobs in 1976 in Cupertino, California.
+ The company's revenue in 2023 was $394.33 billion.
+ Tim Cook is the current CEO of Apple.
+ """
+
+ entities = entity_extractor.extract_entities(text)
+ relationships = relationship_extractor.extract_relationships(text, entities)
+
+ print("Entities found:")
+ for entity in entities:
+ print(f" {entity.text} ({entity.type}) - Confidence: {entity.confidence}")
+
+ print("\nRelationships found:")
+ for rel in relationships:
+ print(f" {rel.subject} --{rel.predicate}--> {rel.object}")
+
+**Triple Generation**
+
+.. code-block:: python
+
+ from semanticore.extraction import TripleExtractor
+
+ # Initialize triple extractor
+ triple_extractor = TripleExtractor(
+ confidence_threshold=0.8,
+ include_implicit_relations=True,
+ temporal_modeling=True,
+ spatial_modeling=True
+ )
+
+ # Extract triples from text
+ text = """
+ Microsoft Corporation was founded by Bill Gates and Paul Allen in 1975.
+ The company is headquartered in Redmond, Washington.
+ Satya Nadella became CEO in 2014.
+ Microsoft acquired LinkedIn in 2016 for $26.2 billion.
+ """
+
+ triples = triple_extractor.extract_triples(text)
+
+ print("Generated Triples:")
+ for triple in triples:
+ print(f" {triple.subject} | {triple.predicate} | {triple.object}")
+ print(f" Confidence: {triple.confidence:.2f}")
+
+ # Export to different formats
+ turtle_format = triple_extractor.to_turtle(triples)
+ ntriples_format = triple_extractor.to_ntriples(triples)
+ jsonld_format = triple_extractor.to_jsonld(triples)
+
+Knowledge Graph Examples
+------------------------
+
+**Building a Knowledge Graph**
+
+.. code-block:: python
+
+ from semanticore.knowledge_graph import KnowledgeGraphBuilder
+
+ # Initialize knowledge graph builder
+ kg_builder = KnowledgeGraphBuilder(
+ storage_backend="neo4j",
+ uri="bolt://localhost:7687",
+ username="neo4j",
+ password="password"
+ )
+
+ # Add triples to the graph
+ triples = [
+ ("Apple Inc.", "founded_by", "Steve Jobs"),
+ ("Apple Inc.", "founded_in", "1976"),
+ ("Apple Inc.", "located_in", "Cupertino"),
+ ("Cupertino", "located_in", "California"),
+ ("Steve Jobs", "co_founded", "Apple Inc."),
+ ("Tim Cook", "is_CEO_of", "Apple Inc."),
+ ("Apple Inc.", "revenue_2023", "$394.33 billion")
+ ]
+
+ for subject, predicate, object in triples:
+ kg_builder.add_triple(subject, predicate, object)
+
+ # Build the knowledge graph
+ kg_builder.build()
+
+ # Query the knowledge graph
+ results = kg_builder.query("""
+ MATCH (e:Entity {name: "Apple Inc."})
+ OPTIONAL MATCH (e)-[r]->(o)
+ RETURN e.name, type(r), o.name
+ """)
+
+ for result in results:
+ print(f"{result['e.name']} --{result['type(r)']}--> {result['o.name']}")
+
+**SPARQL Query Generation**
+
+.. code-block:: python
+
+ from semanticore.knowledge_graph import SPARQLGenerator
+
+ # Initialize SPARQL generator
+ sparql_gen = SPARQLGenerator()
+
+ # Generate SPARQL queries
+ natural_query = "Who founded Apple Inc.?"
+ sparql_query = sparql_gen.generate_sparql(natural_query)
+
+ print(f"Natural Language: {natural_query}")
+ print(f"SPARQL Query: {sparql_query}")
+
+ # Execute the query
+ results = kg_builder.execute_sparql(sparql_query)
+ print(f"Results: {results}")
+
+Vector Embeddings Examples
+--------------------------
+
+**Semantic Embeddings Generation**
+
+.. code-block:: python
+
+ from semanticore.embeddings import SemanticEmbedder
+
+ # Initialize semantic embedder
+ embedder = SemanticEmbedder(
+ model="text-embedding-3-large",
+ dimension=1536,
+ preserve_context=True,
+ semantic_chunking=True
+ )
+
+ # Generate embeddings for documents
+ documents = [
+ "Artificial intelligence is transforming healthcare.",
+ "Machine learning algorithms improve patient outcomes.",
+ "AI-powered diagnostics reduce medical errors.",
+ "Healthcare technology advances rapidly."
+ ]
+
+ # Generate embeddings
+ embeddings = embedder.generate_embeddings(documents)
+
+ print(f"Generated {len(embeddings)} embeddings")
+ print(f"Embedding dimension: {len(embeddings[0])}")
+
+**Semantic Search**
+
+.. code-block:: python
+
+ from semanticore.embeddings import VectorStore
+
+ # Initialize vector store
+ vector_store = VectorStore(
+ provider="pinecone",
+ api_key="your_pinecone_api_key",
+ environment="us-west1-gcp"
+ )
+
+ # Store embeddings
+ vector_store.store_embeddings(documents, embeddings)
+
+ # Semantic search
+ query = "How is AI used in medical diagnosis?"
+ results = vector_store.semantic_search(
+ query=query,
+ top_k=5,
+ include_metadata=True
+ )
+
+ print(f"Search results for: {query}")
+ for i, result in enumerate(results, 1):
+ print(f"{i}. {result.document} (Score: {result.score:.3f})")
+
+**Multi-Modal Embeddings**
+
+.. code-block:: python
+
+ from semanticore.embeddings import MultiModalEmbedder
+
+ # Initialize multi-modal embedder
+ mm_embedder = MultiModalEmbedder(
+ text_model="text-embedding-3-large",
+ image_model="clip-vit-base-patch32",
+ audio_model="whisper-base"
+ )
+
+ # Generate multi-modal embeddings
+ content = {
+ "text": "A chart showing quarterly revenue growth",
+ "image": "revenue_chart.png",
+ "audio": "earnings_call.mp3"
+ }
+
+ embeddings = mm_embedder.generate_embeddings(content)
+
+ print(f"Text embedding: {len(embeddings['text'])} dimensions")
+ print(f"Image embedding: {len(embeddings['image'])} dimensions")
+ print(f"Audio embedding: {len(embeddings['audio'])} dimensions")
+
+Real-Time Processing Examples
+-----------------------------
+
+**Stream Processing with Kafka**
+
+.. code-block:: python
+
+ from semanticore.streaming import KafkaProcessor
+ import asyncio
+
+ async def process_stream():
+ # Initialize Kafka processor
+ kafka_processor = KafkaProcessor(
+ bootstrap_servers=["localhost:9092"],
+ topics=["documents", "web_content", "feeds"],
+ group_id="semanticore-processor"
+ )
+
+ # Process streaming data
+ async for message in kafka_processor.consume():
+ content = message.value
+
+ # Determine content type and process accordingly
+ if message.headers.get("content_type") == "application/pdf":
+ processed = doc_processor.process_pdf_bytes(content)
+ elif message.headers.get("content_type") == "text/html":
+ processed = web_processor.process_html(content)
+ else:
+ processed = content
+
+ # Extract semantics and build knowledge
+ semantics = core.extract_semantics(processed)
+ triples = core.generate_triples(semantics)
+ knowledge_graph.add_triples(triples)
+
+ print(f"Processed message from topic: {message.topic}")
+
+ # Run the stream processor
+ asyncio.run(process_stream())
+
+Domain-Specific Examples
+------------------------
+
+**Cybersecurity Intelligence**
+
+.. code-block:: python
+
+ from semanticore.domains.cybersecurity import CyberIntelProcessor
+
+ # Initialize cybersecurity processor
+ cyber_processor = CyberIntelProcessor(
+ threat_feeds=[
+ "https://feeds.feedburner.com/CyberSecurityNewsDaily",
+ "https://www.us-cert.gov/ncas/current-activity.xml"
+ ],
+ formats=["pdf", "html", "xml", "json"],
+ extract_iocs=True,
+ map_to_mitre=True
+ )
+
+ # Process cybersecurity sources
+ sources = [
+ "threat_report.pdf",
+ "https://security-blog.com/rss",
+ "vulnerability_data.json"
+ ]
+
+ cyber_knowledge = cyber_processor.build_threat_intelligence(sources)
+
+ # Generate STIX bundles
+ stix_bundle = cyber_knowledge.to_stix()
+ print(f"Generated STIX bundle with {len(stix_bundle.objects)} objects")
+
+**Biomedical Literature Processing**
+
+.. code-block:: python
+
+ from semanticore.domains.biomedical import BiomedicalProcessor
+
+ # Initialize biomedical processor
+ bio_processor = BiomedicalProcessor(
+ pubmed_integration=True,
+ extract_drug_interactions=True,
+ map_to_mesh=True,
+ clinical_trial_detection=True
+ )
+
+ # Process biomedical literature
+ sources = [
+ "research_papers/",
+ "https://pubmed.ncbi.nlm.nih.gov/rss/",
+ "clinical_reports.pdf"
+ ]
+
+ biomedical_knowledge = bio_processor.build_medical_knowledge_base(sources)
+
+ # Generate medical ontology
+ medical_ontology = biomedical_knowledge.generate_ontology()
+
+**Financial Data Analysis**
+
+.. code-block:: python
+
+ from semanticore.domains.finance import FinancialProcessor
+
+ # Initialize financial processor
+ finance_processor = FinancialProcessor(
+ sec_filings=True,
+ news_sentiment=True,
+ market_data_integration=True,
+ regulatory_compliance=True
+ )
+
+ # Process financial data sources
+ sources = [
+ "earnings_reports/",
+ "https://feeds.finance.yahoo.com/rss/",
+ "sec_filings.xml"
+ ]
+
+ financial_knowledge = finance_processor.build_financial_knowledge_graph(sources)
+
+ # Generate financial semantic triples
+ triples = financial_knowledge.extract_financial_triples()
+
+Integration Examples
+--------------------
+
+**LangChain Integration**
+
+.. code-block:: python
+
+ from langchain.llms import OpenAI
+ from langchain.chains import LLMChain
+ from semanticore.integrations.langchain import SemantiCoreLoader
+
+ # Initialize LangChain components
+ llm = OpenAI(temperature=0)
+ chain = LLMChain(llm=llm, prompt=prompt)
+
+ # Use SemantiCore as a document loader
+ loader = SemantiCoreLoader(
+ sources=["documents/"],
+ extract_semantics=True,
+ generate_triples=True
+ )
+
+ documents = loader.load()
+
+ # Process with LangChain
+ for doc in documents:
+ result = chain.run(doc.page_content)
+ print(f"Analysis: {result}")
+
+**Streamlit Web Application**
+
+.. code-block:: python
+
+ import streamlit as st
+ from semanticore import SemantiCore
+
+ st.title("SemantiCore Document Processor")
+
+ # File upload
+ uploaded_file = st.file_uploader("Choose a file", type=['pdf', 'docx', 'txt'])
+
+ if uploaded_file is not None:
+ # Initialize SemantiCore
+ core = SemantiCore()
+
+ # Process the file
+ with st.spinner("Processing document..."):
+ result = core.process_document(uploaded_file)
+
+ # Display results
+ st.success("Processing complete!")
+
+ col1, col2, col3 = st.columns(3)
+
+ with col1:
+ st.metric("Entities", len(result.entities))
+
+ with col2:
+ st.metric("Triples", len(result.triples))
+
+ with col3:
+ st.metric("Embeddings", len(result.embeddings))
+
+ # Show entities
+ st.subheader("Extracted Entities")
+ for entity in result.entities[:10]:
+ st.write(f"โข {entity.text} ({entity.type})")
+
+Performance Optimization Examples
+--------------------------------
+
+**Batch Processing for Large Datasets**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+ import concurrent.futures
+
+ # Initialize SemantiCore with optimized settings
+ core = SemantiCore(
+ config={
+ "processing": {
+ "batch_size": 100,
+ "max_workers": 8,
+ "timeout": 600,
+ "memory_limit": "8GB"
+ }
+ }
+ )
+
+ # Process large dataset in batches
+ documents = load_large_dataset() # 10,000+ documents
+
+ def process_batch(batch):
+ return core.process_documents(batch)
+
+ # Split into batches
+ batch_size = 100
+ batches = [documents[i:i + batch_size] for i in range(0, len(documents), batch_size)]
+
+ # Process batches in parallel
+ with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
+ results = list(executor.map(process_batch, batches))
+
+ print(f"Processed {len(documents)} documents in {len(batches)} batches")
+
+**Memory-Efficient Processing**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+ import gc
+
+ # Initialize with memory optimization
+ core = SemantiCore(
+ config={
+ "processing": {
+ "batch_size": 50,
+ "max_workers": 2,
+ "memory_limit": "4GB",
+ "cleanup_interval": 10
+ }
+ }
+ )
+
+ # Process documents with memory management
+ documents = load_documents()
+
+ for i, doc in enumerate(documents):
+ # Process single document
+ result = core.process_document(doc)
+
+ # Store results
+ store_results(result)
+
+ # Clean up memory periodically
+ if i % 10 == 0:
+ gc.collect()
+ print(f"Processed {i} documents, memory cleaned")
+
+.. raw:: html
+
+
+ ๐ก Tip: These examples can be combined and customized for your specific use case. Check the API reference for more detailed parameter options.
+
\ No newline at end of file
diff --git a/docs/getting_started.rst b/docs/getting_started.rst
new file mode 100644
index 00000000..ced2ac71
--- /dev/null
+++ b/docs/getting_started.rst
@@ -0,0 +1,286 @@
+Getting Started with SemantiCore
+================================
+
+Welcome to SemantiCore! This guide will help you get up and running with the most comprehensive semantic data transformation toolkit.
+
+Installation
+------------
+
+Choose the installation option that best fits your needs:
+
+**Complete Installation (Recommended)**
+.. code-block:: bash
+
+ pip install "semanticore[all]"
+
+**Lightweight Installation**
+.. code-block:: bash
+
+ pip install semanticore
+
+**Specific Format Support**
+.. code-block:: bash
+
+ # PDF and Office documents
+ pip install "semanticore[pdf,office]"
+
+ # Web content and feeds
+ pip install "semanticore[web,feeds]"
+
+ # Database and vector stores
+ pip install "semanticore[database,vector]"
+
+ # Machine learning capabilities
+ pip install "semanticore[ml]"
+
+**Development Installation**
+.. code-block:: bash
+
+ git clone https://github.com/semanticore/semanticore.git
+ cd semanticore
+ pip install -e ".[dev]"
+
+Quick Start
+-----------
+
+**30-Second Demo: From Any Format to Knowledge**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ # Initialize with preferred providers
+ core = SemantiCore(
+ llm_provider="openai",
+ embedding_model="text-embedding-3-large",
+ vector_store="pinecone",
+ graph_db="neo4j"
+ )
+
+ # Process ANY data format
+ sources = [
+ "financial_report.pdf",
+ "https://example.com/news/rss",
+ "research_papers/",
+ "data.json",
+ "https://example.com/article"
+ ]
+
+ # One-line semantic transformation
+ knowledge_base = core.build_knowledge_base(sources)
+
+ print(f"Processed {len(knowledge_base.documents)} documents")
+ print(f"Extracted {len(knowledge_base.entities)} entities")
+ print(f"Generated {len(knowledge_base.triples)} semantic triples")
+ print(f"Created {len(knowledge_base.embeddings)} vector embeddings")
+
+ # Query the knowledge base
+ results = knowledge_base.query("What are the key financial trends?")
+
+Basic Usage Examples
+--------------------
+
+**1. Document Processing**
+
+.. code-block:: python
+
+ from semanticore.processors import DocumentProcessor
+
+ # Initialize document processor
+ doc_processor = DocumentProcessor(
+ extract_tables=True,
+ extract_images=True,
+ extract_metadata=True,
+ preserve_structure=True
+ )
+
+ # Process various document types
+ pdf_content = doc_processor.process_pdf("report.pdf")
+ docx_content = doc_processor.process_docx("document.docx")
+ pptx_content = doc_processor.process_pptx("presentation.pptx")
+
+**2. Web Content Processing**
+
+.. code-block:: python
+
+ from semanticore.processors import WebProcessor, FeedProcessor
+
+ # Web content processor
+ web_processor = WebProcessor(
+ respect_robots=True,
+ extract_metadata=True,
+ follow_redirects=True,
+ max_depth=3
+ )
+
+ # RSS/Atom feed processor
+ feed_processor = FeedProcessor(
+ update_interval="5m",
+ deduplicate=True,
+ extract_full_content=True
+ )
+
+ # Process web content
+ webpage = web_processor.process_url("https://example.com/article")
+ semantics = core.extract_semantics(webpage.content)
+
+**3. Semantic Extraction**
+
+.. code-block:: python
+
+ from semanticore.extraction import TripleExtractor
+
+ # Initialize triple extractor
+ triple_extractor = TripleExtractor(
+ confidence_threshold=0.8,
+ include_implicit_relations=True,
+ temporal_modeling=True
+ )
+
+ # Extract triples from any content
+ text = "Apple Inc. was founded by Steve Jobs in 1976 in Cupertino, California."
+ triples = triple_extractor.extract_triples(text)
+
+ print(triples)
+ # [
+ # Triple(subject="Apple Inc.", predicate="founded_by", object="Steve Jobs"),
+ # Triple(subject="Apple Inc.", predicate="founded_in", object="1976"),
+ # Triple(subject="Apple Inc.", predicate="located_in", object="Cupertino"),
+ # Triple(subject="Cupertino", predicate="located_in", object="California")
+ # ]
+
+**4. Knowledge Graph Construction**
+
+.. code-block:: python
+
+ from semanticore.knowledge_graph import KnowledgeGraphBuilder
+
+ # Initialize knowledge graph builder
+ kg_builder = KnowledgeGraphBuilder(
+ storage_backend="neo4j",
+ uri="bolt://localhost:7687",
+ username="neo4j",
+ password="password"
+ )
+
+ # Build knowledge graph from triples
+ kg_builder.add_triples(triples)
+ kg_builder.build()
+
+ # Query the knowledge graph
+ results = kg_builder.query("""
+ MATCH (e:Entity {name: "Apple Inc."})
+ RETURN e
+ """)
+
+**5. Vector Embeddings**
+
+.. code-block:: python
+
+ from semanticore.embeddings import SemanticEmbedder
+
+ # Initialize semantic embedder
+ embedder = SemanticEmbedder(
+ model="text-embedding-3-large",
+ dimension=1536,
+ preserve_context=True,
+ semantic_chunking=True
+ )
+
+ # Generate semantic embeddings
+ documents = load_documents()
+ semantic_chunks = embedder.semantic_chunk(documents)
+ embeddings = embedder.generate_embeddings(semantic_chunks)
+
+ # Store in vector database
+ vector_store = core.get_vector_store("pinecone")
+ vector_store.store_embeddings(semantic_chunks, embeddings)
+
+ # Semantic search
+ query = "artificial intelligence applications in healthcare"
+ results = vector_store.semantic_search(query, top_k=10)
+
+Configuration
+-------------
+
+SemantiCore can be configured through environment variables or a configuration file:
+
+**Environment Variables**
+.. code-block:: bash
+
+ export SEMANTICORE_LLM_PROVIDER=openai
+ export SEMANTICORE_EMBEDDING_MODEL=text-embedding-3-large
+ export SEMANTICORE_VECTOR_STORE=pinecone
+ export SEMANTICORE_GRAPH_DB=neo4j
+ export OPENAI_API_KEY=your_openai_api_key
+ export PINECONE_API_KEY=your_pinecone_api_key
+
+**Configuration File (config.yaml)**
+.. code-block:: yaml
+
+ llm:
+ provider: openai
+ model: gpt-4
+ api_key: ${OPENAI_API_KEY}
+
+ embeddings:
+ model: text-embedding-3-large
+ dimension: 1536
+ preserve_context: true
+
+ vector_store:
+ provider: pinecone
+ api_key: ${PINECONE_API_KEY}
+ environment: us-west1-gcp
+
+ knowledge_graph:
+ provider: neo4j
+ uri: bolt://localhost:7687
+ username: neo4j
+ password: password
+
+ processing:
+ batch_size: 100
+ max_workers: 4
+ timeout: 300
+
+Next Steps
+----------
+
+Now that you have SemantiCore installed and running, explore these resources:
+
+* :doc:`examples` - Comprehensive examples for different use cases
+* :doc:`tutorials/index` - Step-by-step tutorials
+* :doc:`api/index` - Complete API reference
+* :doc:`advanced/streaming` - Real-time processing capabilities
+* :doc:`advanced/deployment` - Production deployment guide
+
+Common Issues
+-------------
+
+**Import Error: No module named 'semanticore'**
+ Make sure you've installed SemantiCore correctly. Try reinstalling with:
+ .. code-block:: bash
+ pip install --upgrade semanticore
+
+**API Key Errors**
+ Ensure your API keys are set correctly in environment variables or configuration file.
+
+**Memory Issues**
+ For large documents, consider increasing your system's memory or using batch processing.
+
+**Performance Issues**
+ Enable GPU acceleration if available and adjust batch sizes in configuration.
+
+Need Help?
+----------
+
+* ๐ **Documentation**: Browse the complete documentation
+* ๐ฌ **Discord**: Join our community for real-time support
+* ๐ **GitHub**: Report issues and contribute
+* ๐ง **Email**: Contact us at support@semanticore.io
+
+.. raw:: html
+
+
+
๐ก Pro Tip: Start with the lightweight installation and add specific format support as needed. This keeps your environment clean and reduces dependencies.
\ No newline at end of file
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 00000000..ab70b903
Binary files /dev/null and b/docs/index.rst differ
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 00000000..f7fb2781
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,35 @@
+# Documentation dependencies for SemantiCore
+
+# Core Sphinx
+sphinx>=7.0.0
+sphinx-rtd-theme>=1.3.0
+
+# Sphinx extensions
+sphinx-copybutton>=0.5.0
+sphinx-tabs>=3.4.0
+myst-parser>=2.0.0
+sphinxcontrib-spelling>=8.0.0
+
+# Documentation quality tools
+doc8>=1.1.0
+sphinx-lint>=0.6.0
+
+# Additional extensions
+sphinx-autodoc-typehints>=1.24.0
+sphinx-autobuild>=2021.3.14
+sphinx-gallery>=0.15.0
+
+# For PDF generation
+sphinx-latex-parser>=0.1.0
+
+# For better code highlighting
+pygments>=2.15.0
+
+# For spell checking
+pyenchant>=3.2.0
+
+# For link checking
+requests>=2.31.0
+
+# For development
+watchdog>=3.0.0
\ No newline at end of file
diff --git a/docs/tutorials/quick_start.rst b/docs/tutorials/quick_start.rst
new file mode 100644
index 00000000..d23f7d17
--- /dev/null
+++ b/docs/tutorials/quick_start.rst
@@ -0,0 +1,362 @@
+Quick Start Tutorial
+===================
+
+This tutorial will guide you through your first steps with SemantiCore, from installation to processing your first document.
+
+Prerequisites
+-------------
+
+- Python 3.8 or higher
+- pip package manager
+- Basic knowledge of Python
+
+Installation
+------------
+
+**Step 1: Install SemantiCore**
+
+.. code-block:: bash
+
+ # Complete installation with all features
+ pip install "semanticore[all]"
+
+ # Or lightweight installation
+ pip install semanticore
+
+**Step 2: Verify Installation**
+
+.. code-block:: python
+
+ import semanticore
+ print(f"SemantiCore version: {semanticore.__version__}")
+
+Your First Document
+-------------------
+
+**Step 1: Create a Sample Document**
+
+Create a file named `sample.txt` with the following content:
+
+.. code-block:: text
+
+ Apple Inc. was founded by Steve Jobs and Steve Wozniak in 1976.
+ The company is headquartered in Cupertino, California.
+ Tim Cook became CEO in 2011 after Steve Jobs passed away.
+ Apple's revenue in 2023 was $394.33 billion.
+
+**Step 2: Process the Document**
+
+.. code-block:: python
+
+ from semanticore import SemantiCore
+
+ # Initialize SemantiCore
+ core = SemantiCore()
+
+ # Process the document
+ result = core.process_document("sample.txt")
+
+ # View results
+ print(f"Entities found: {len(result.entities)}")
+ print(f"Triples generated: {len(result.triples)}")
+ print(f"Embeddings created: {len(result.embeddings)}")
+
+**Step 3: Explore the Results**
+
+.. code-block:: python
+
+ # View extracted entities
+ for entity in result.entities:
+ print(f"Entity: {entity.text} (Type: {entity.type})")
+
+ # View generated triples
+ for triple in result.triples:
+ print(f"Triple: {triple.subject} | {triple.predicate} | {triple.object}")
+
+ # View embeddings
+ print(f"Embedding dimension: {len(result.embeddings[0])}")
+
+Working with Different Formats
+------------------------------
+
+**PDF Documents**
+
+.. code-block:: python
+
+ from semanticore.processors import DocumentProcessor
+
+ # Initialize PDF processor
+ pdf_processor = DocumentProcessor()
+
+ # Process PDF
+ pdf_result = pdf_processor.process_pdf("document.pdf")
+ print(f"Extracted text: {len(pdf_result.text)} characters")
+
+**Web Content**
+
+.. code-block:: python
+
+ from semanticore.processors import WebProcessor
+
+ # Initialize web processor
+ web_processor = WebProcessor()
+
+ # Process web page
+ web_result = web_processor.process_url("https://example.com/article")
+ print(f"Title: {web_result.title}")
+ print(f"Content: {len(web_result.content)} characters")
+
+**Structured Data**
+
+.. code-block:: python
+
+ from semanticore.processors import StructuredDataProcessor
+
+ # Initialize structured data processor
+ structured_processor = StructuredDataProcessor()
+
+ # Process JSON data
+ json_result = structured_processor.process_json("data.json")
+ print(f"Schema: {json_result.schema}")
+
+Building a Knowledge Graph
+--------------------------
+
+**Step 1: Initialize Knowledge Graph**
+
+.. code-block:: python
+
+ from semanticore.knowledge_graph import KnowledgeGraphBuilder
+
+ # Initialize knowledge graph builder
+ kg_builder = KnowledgeGraphBuilder(
+ storage_backend="memory" # Use in-memory storage for this tutorial
+ )
+
+**Step 2: Add Triples**
+
+.. code-block:: python
+
+ # Add triples from processed document
+ for triple in result.triples:
+ kg_builder.add_triple(
+ subject=triple.subject,
+ predicate=triple.predicate,
+ object=triple.object
+ )
+
+**Step 3: Build and Query**
+
+.. code-block:: python
+
+ # Build the knowledge graph
+ kg_builder.build()
+
+ # Query the knowledge graph
+ query_results = kg_builder.query("""
+ MATCH (e:Entity {name: "Apple Inc."})
+ RETURN e
+ """)
+
+ print(f"Query results: {len(query_results)}")
+
+Creating Vector Embeddings
+--------------------------
+
+**Step 1: Initialize Embedder**
+
+.. code-block:: python
+
+ from semanticore.embeddings import SemanticEmbedder
+
+ # Initialize semantic embedder
+ embedder = SemanticEmbedder(
+ model="text-embedding-3-large",
+ dimension=1536
+ )
+
+**Step 2: Generate Embeddings**
+
+.. code-block:: python
+
+ # Generate embeddings for document chunks
+ chunks = result.chunks
+ embeddings = embedder.generate_embeddings(chunks)
+
+ print(f"Generated {len(embeddings)} embeddings")
+ print(f"Each embedding has {len(embeddings[0])} dimensions")
+
+**Step 3: Semantic Search**
+
+.. code-block:: python
+
+ # Perform semantic search
+ query = "Who founded Apple?"
+ search_results = embedder.semantic_search(query, embeddings, top_k=3)
+
+ for i, (chunk, score) in enumerate(search_results):
+ print(f"{i+1}. Score: {score:.3f}")
+ print(f" Content: {chunk[:100]}...")
+
+Real-Time Processing
+--------------------
+
+**Step 1: Set up Feed Processing**
+
+.. code-block:: python
+
+ from semanticore.streaming import FeedProcessor
+ import asyncio
+
+ async def process_feeds():
+ # Initialize feed processor
+ feed_processor = FeedProcessor(
+ update_interval="5m",
+ deduplicate=True
+ )
+
+ # Subscribe to a feed
+ feed_processor.subscribe("https://feeds.feedburner.com/TechCrunch")
+
+ # Process items
+ async for item in feed_processor.stream():
+ print(f"New item: {item.title}")
+
+ # Process with SemantiCore
+ item_result = core.process_document(item.content)
+ print(f"Extracted {len(item_result.entities)} entities")
+
+ # Run the feed processor
+ asyncio.run(process_feeds())
+
+Configuration
+-------------
+
+**Environment Variables**
+
+.. code-block:: bash
+
+ export SEMANTICORE_LLM_PROVIDER=openai
+ export SEMANTICORE_EMBEDDING_MODEL=text-embedding-3-large
+ export OPENAI_API_KEY=your_api_key_here
+
+**Configuration File**
+
+Create `config.yaml`:
+
+.. code-block:: yaml
+
+ llm:
+ provider: openai
+ model: gpt-4
+ api_key: ${OPENAI_API_KEY}
+
+ embeddings:
+ model: text-embedding-3-large
+ dimension: 1536
+
+ processing:
+ batch_size: 100
+ max_workers: 4
+
+**Programmatic Configuration**
+
+.. code-block:: python
+
+ config = {
+ "llm": {
+ "provider": "openai",
+ "model": "gpt-4",
+ "api_key": "your_api_key"
+ },
+ "embeddings": {
+ "model": "text-embedding-3-large",
+ "dimension": 1536
+ }
+ }
+
+ core = SemantiCore(config=config)
+
+Error Handling
+--------------
+
+**Basic Error Handling**
+
+.. code-block:: python
+
+ from semanticore.core.exceptions import SemantiCoreError
+
+ try:
+ result = core.process_document("document.pdf")
+ except SemantiCoreError as e:
+ print(f"Error processing document: {e}")
+ except FileNotFoundError:
+ print("Document not found")
+ except Exception as e:
+ print(f"Unexpected error: {e}")
+
+**Validation**
+
+.. code-block:: python
+
+ # Validate input before processing
+ import os
+
+ def process_safe(file_path):
+ if not os.path.exists(file_path):
+ raise FileNotFoundError(f"File not found: {file_path}")
+
+ if os.path.getsize(file_path) > 100 * 1024 * 1024: # 100MB
+ raise ValueError("File too large")
+
+ return core.process_document(file_path)
+
+Performance Optimization
+------------------------
+
+**Batch Processing**
+
+.. code-block:: python
+
+ # Process multiple documents efficiently
+ documents = ["doc1.pdf", "doc2.pdf", "doc3.pdf"]
+
+ results = core.process_documents(documents)
+
+ for doc, result in zip(documents, results):
+ print(f"{doc}: {len(result.entities)} entities")
+
+**Memory Management**
+
+.. code-block:: python
+
+ # Process large datasets with generators
+ def document_generator():
+ for doc in large_dataset:
+ yield doc
+
+ for result in core.process_documents_stream(document_generator()):
+ process_result(result)
+
+Next Steps
+----------
+
+Congratulations! You've completed the quick start tutorial. Here's what you can explore next:
+
+1. **Advanced Examples**: Check out the comprehensive examples in the examples section
+2. **API Reference**: Explore the complete API documentation
+3. **Tutorials**: Follow step-by-step tutorials for specific use cases
+4. **Community**: Join our Discord community for help and discussions
+
+**Additional Resources**
+
+- ๐ [Complete Documentation](https://semanticore.readthedocs.io/)
+- ๐ก [Examples Repository](https://github.com/semanticore/examples)
+- ๐ฌ [Community Discord](https://discord.gg/semanticore)
+- ๐ [GitHub Repository](https://github.com/semanticore/semanticore)
+
+.. raw:: html
+
+
+ ๐ Congratulations! You've successfully completed the SemantiCore quick start tutorial. You're now ready to transform your data into intelligent knowledge!
+
\ No newline at end of file
diff --git a/scripts/build_docs.py b/scripts/build_docs.py
new file mode 100644
index 00000000..bec4c6e2
--- /dev/null
+++ b/scripts/build_docs.py
@@ -0,0 +1,179 @@
+#!/usr/bin/env python3
+"""
+Script to build SemantiCore documentation.
+"""
+
+import os
+import sys
+import subprocess
+import shutil
+from pathlib import Path
+
+def run_command(command, cwd=None):
+ """Run a shell command and return the result."""
+ try:
+ result = subprocess.run(
+ command,
+ shell=True,
+ cwd=cwd,
+ capture_output=True,
+ text=True,
+ check=True
+ )
+ print(f"โ
{command}")
+ return result.stdout
+ except subprocess.CalledProcessError as e:
+ print(f"โ {command}")
+ print(f"Error: {e.stderr}")
+ return None
+
+def install_dependencies():
+ """Install documentation dependencies."""
+ print("๐ฆ Installing documentation dependencies...")
+
+ dependencies = [
+ "sphinx",
+ "sphinx-rtd-theme",
+ "sphinx-copybutton",
+ "sphinx-tabs",
+ "myst-parser",
+ "sphinxcontrib-spelling",
+ "doc8",
+ "sphinx-lint"
+ ]
+
+ for dep in dependencies:
+ run_command(f"pip install {dep}")
+
+def build_documentation():
+ """Build the documentation."""
+ print("๐จ Building documentation...")
+
+ docs_dir = Path("docs")
+ if not docs_dir.exists():
+ print("โ docs directory not found!")
+ return False
+
+ # Change to docs directory
+ os.chdir(docs_dir)
+
+ # Clean previous builds
+ if Path("_build").exists():
+ shutil.rmtree("_build")
+
+ # Build HTML documentation
+ result = run_command("make html")
+ if result is None:
+ return False
+
+ # Check for broken links
+ print("๐ Checking for broken links...")
+ result = run_command("make linkcheck")
+ if result is None:
+ print("โ ๏ธ Link check failed, but continuing...")
+
+ # Run doctests
+ print("๐งช Running doctests...")
+ result = run_command("make doctest")
+ if result is None:
+ print("โ ๏ธ Doctests failed, but continuing...")
+
+ return True
+
+def serve_documentation():
+ """Serve the documentation locally."""
+ print("๐ Starting local documentation server...")
+
+ docs_dir = Path("docs")
+ build_dir = docs_dir / "_build" / "html"
+
+ if not build_dir.exists():
+ print("โ Documentation not built. Run build first.")
+ return False
+
+ os.chdir(build_dir)
+
+ print("๐ Documentation available at: http://localhost:8000")
+ print("Press Ctrl+C to stop the server.")
+
+ try:
+ run_command("python -m http.server 8000")
+ except KeyboardInterrupt:
+ print("\n๐ Server stopped.")
+
+ return True
+
+def deploy_documentation():
+ """Deploy documentation to GitHub Pages."""
+ print("๐ Deploying documentation to GitHub Pages...")
+
+ # Check if we're on the main branch
+ result = run_command("git branch --show-current")
+ if result and "main" not in result.strip():
+ print("โ Not on main branch. Deployment only works from main.")
+ return False
+
+ # Build documentation
+ if not build_documentation():
+ return False
+
+ # Deploy to gh-pages branch
+ docs_dir = Path("docs")
+ build_dir = docs_dir / "_build" / "html"
+
+ if not build_dir.exists():
+ print("โ Documentation not built.")
+ return False
+
+ # Create gh-pages branch if it doesn't exist
+ run_command("git checkout --orphan gh-pages || git checkout gh-pages")
+
+ # Copy built documentation
+ for item in build_dir.iterdir():
+ if item.is_file():
+ shutil.copy2(item, ".")
+ elif item.is_dir():
+ shutil.copytree(item, item.name, dirs_exist_ok=True)
+
+ # Commit and push
+ run_command("git add .")
+ run_command('git commit -m "Update documentation"')
+ run_command("git push origin gh-pages")
+
+ # Switch back to main branch
+ run_command("git checkout main")
+
+ print("โ
Documentation deployed successfully!")
+ return True
+
+def main():
+ """Main function."""
+ if len(sys.argv) < 2:
+ print("Usage: python build_docs.py [install|build|serve|deploy|all]")
+ print("\nCommands:")
+ print(" install - Install documentation dependencies")
+ print(" build - Build documentation")
+ print(" serve - Serve documentation locally")
+ print(" deploy - Deploy to GitHub Pages")
+ print(" all - Install, build, and serve")
+ return
+
+ command = sys.argv[1].lower()
+
+ if command == "install":
+ install_dependencies()
+ elif command == "build":
+ build_documentation()
+ elif command == "serve":
+ serve_documentation()
+ elif command == "deploy":
+ deploy_documentation()
+ elif command == "all":
+ install_dependencies()
+ if build_documentation():
+ serve_documentation()
+ else:
+ print(f"โ Unknown command: {command}")
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file