# Quickstart

Get started with Semantica in 5 minutes. This guide will walk you through building your first knowledge graph.

!!! tip "Before You Start"
    Make sure you have Semantica installed. If not, follow the [Installation Guide](installation.md) first. This quickstart assumes basic Python knowledge.

## Overview

```mermaid
flowchart LR
    A[Install] --> B[Initialize]
    B --> C[Load Data]
    C --> D[Extract]
    D --> E[Build Graph]
    E --> F[Visualize]
    
    style A fill:#e3f2fd
    style F fill:#c8e6c9
```

## Step 1: Installation

If you haven't installed Semantica yet:

```bash
pip install semantica
```

See the [Installation Guide](installation.md) for detailed instructions.

!!! note "Installation Options"
    For production use, consider installing with optional dependencies for better performance: `pip install semantica[all]`. See the [Installation Guide](installation.md) for all options.

## Step 2: Your First Knowledge Graph

Let's build a knowledge graph from a document:

```python
from semantica import Semantica

# Initialize Semantica
semantica = Semantica()

# Build knowledge graph from a document
result = semantica.build_knowledge_base(
    sources=["document.pdf"],
    embeddings=True,
    graph=True
)

# Access results
kg = result["knowledge_graph"]
embeddings = result["embeddings"]
statistics = result["statistics"]

print(f"Extracted {len(kg['entities'])} entities")
print(f"Created {len(kg['relationships'])} relationships")
print(f"Generated {len(embeddings)} embeddings")
```

**Expected Output:**
```
Extracted 45 entities
Created 32 relationships
Generated 45 embeddings
```

## Step 3: Extract Entities and Relationships

Extract structured information from text:

```python
from semantica.semantic_extract import NamedEntityRecognizer, RelationExtractor

# Sample text
text = """
Apple Inc. was founded by Steve Jobs in Cupertino, California in 1976.
The company designs and manufactures consumer electronics and software.
Tim Cook is the current CEO of Apple.
"""

# Extract entities
ner = NamedEntityRecognizer()
entities = ner.extract_entities(text)

print("Extracted Entities:")
for entity in entities:
    print(f"  - {entity.text} ({entity.label})")

# Extract relationships
rel_extractor = RelationExtractor()
relationships = rel_extractor.extract_relations(text, entities=entities)

print("\nExtracted Relationships:")
for rel in relationships:
    print(f"  - {rel.subject.text} --[{rel.predicate}]--> {rel.object.text}")
```

**Expected Output:**
```
Extracted Entities:
  - Apple Inc. (ORGANIZATION)
  - Steve Jobs (PERSON)
  - Cupertino (LOCATION)
  - California (LOCATION)
  - Tim Cook (PERSON)

Extracted Relationships:
  - Apple Inc. --[founded_by]--> Steve Jobs
  - Apple Inc. --[located_in]--> Cupertino
  - Apple Inc. --[has_ceo]--> Tim Cook
```

## Step 4: Build Knowledge Graph from Multiple Sources

Combine data from multiple sources:

```python
from semantica import Semantica

semantica = Semantica()

# Multiple data sources
sources = [
    "documents/research_paper.pdf",
    "documents/company_report.docx",
    "https://example.com/news-article"
]

# Build unified knowledge graph
result = semantica.build_knowledge_base(
    sources=sources,
    embeddings=True,
    graph=True,
    normalize=True
)

kg = result["knowledge_graph"]

# Analyze the graph
print(f"Total entities: {len(kg['entities'])}")
print(f"Total relationships: {len(kg['relationships'])}")
print(f"Sources processed: {len(result['metadata']['sources'])}")
```

## Step 5: Visualize Your Knowledge Graph

Visualize the knowledge graph you created:

```python
from semantica import Semantica
from semantica.visualization import KGVisualizer

semantica = Semantica()

# Build graph
result = semantica.build_knowledge_base(["document.pdf"])
kg = result["knowledge_graph"]

# Visualize
visualizer = KGVisualizer()
visualizer.visualize_network(kg, output="html", file_path="graph.html")
print("Graph visualization saved to graph.html")
```

Open `graph.html` in your browser to see an interactive visualization.

## Step 6: Export Your Knowledge Graph

Export your knowledge graph in various formats:

```python
from semantica import Semantica
from semantica.export import export_rdf, export_json, export_csv, export_owl

semantica = Semantica()

# Build graph
result = semantica.build_knowledge_base(["data.pdf"])
kg = result["knowledge_graph"]

# Export to different formats
export_rdf(kg, "output.rdf")      # RDF/XML format
export_json(kg, "output.json")    # JSON format
export_csv(kg, "output.csv")      # CSV format
export_owl(kg, "output.owl")       # OWL ontology format

print("Exported knowledge graph to multiple formats")
```

## Common Patterns

### Pattern 1: Process Text Directly

```python
from semantica import Semantica

semantica = Semantica()

text = "Your text content here..."
result = semantica.process_document(text)
```

### Pattern 2: Custom Configuration

```python
from semantica import Semantica, Config

# Create custom configuration
config = Config(
    embeddings=True,
    graph=True,
    normalize=True,
    conflict_resolution="voting"
)

semantica = Semantica(config=config)
result = semantica.build_knowledge_base(["document.pdf"])
```

### Pattern 3: Incremental Building

```python
from semantica import Semantica

semantica = Semantica()

# Build incrementally
kg1 = semantica.kg.build_graph(["source1.pdf"])
kg2 = semantica.kg.build_graph(["source2.pdf"])

# Merge knowledge graphs
merged_kg = semantica.kg.merge([kg1, kg2])
```

## Next Steps

Now that you've built your first knowledge graph:

1. **[Explore Examples](examples.md)** - See more advanced use cases
2. **[API Reference](reference/core.md) - Learn about all available methods
3. **[Cookbook](cookbook.md)** - Interactive Jupyter notebooks
4. **[Full Documentation](https://github.com/Hawksight-AI/semantica/blob/main/README.md)** - Comprehensive guide

## Troubleshooting

### Common Issues

**Issue**: No entities extracted
- **Solution**: Check that your document contains text content. PDFs with images only won't work without OCR.

**Issue**: Slow processing
- **Solution**: For large documents, consider processing in chunks or using GPU acceleration.

**Issue**: Memory errors
- **Solution**: Process documents one at a time or reduce batch sizes.

Need help? Check the [Installation Troubleshooting](installation.md#troubleshooting) or [GitHub Issues](https://github.com/Hawksight-AI/semantica/issues).
