{"id":27142521,"url":"https://github.com/eth-library/eth-udk-navigator","last_synced_at":"2026-02-21T22:06:29.631Z","repository":{"id":284203854,"uuid":"947452558","full_name":"eth-library/eth-udk-navigator","owner":"eth-library","description":"Explore and navigate the ETH-UDK Classification System","archived":false,"fork":false,"pushed_at":"2025-03-27T09:07:45.000Z","size":24564,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-08T07:51:49.388Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eth-library.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-12T17:54:57.000Z","updated_at":"2025-03-27T09:07:48.000Z","dependencies_parsed_at":"2025-03-24T18:35:28.866Z","dependency_job_id":null,"html_url":"https://github.com/eth-library/eth-udk-navigator","commit_stats":null,"previous_names":["eth-library/eth-udk-navigator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eth-library/eth-udk-navigator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-library%2Feth-udk-navigator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-library%2Feth-udk-navigator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-library%2Feth-udk-navigator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-library%2Feth-udk-navigator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eth-library","download_url":"https://codeload.github.com/eth-library/eth-udk-navigator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eth-library%2Feth-udk-navigator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29694859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T18:18:25.093Z","status":"ssl_error","status_checked_at":"2026-02-21T18:18:22.435Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-08T07:52:02.588Z","updated_at":"2026-02-21T22:06:29.615Z","avatar_url":"https://github.com/eth-library.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ETH-UDK Navigator\n\n**ETH-UDK Navigator** is an AI-powered web application developed by the [ETH Library](https://library.ethz.ch) to support subject indexing and discovery using the ETH Zurich adaptation of the Universal Decimal Classification (UDC).\n\nThe application combines classical classification data with modern AI tools, allowing users to explore subject hierarchies, interactively visualize semantic relationships, and search classification terms using natural language via semantic vector search.\n\n---\n\n## 📚 What You Can Do with ETH-UDK Navigator\n\n### 1. **Explore the Classification**\nUse the **Explorer** view to browse top-level classification terms and drill down into narrower or related concepts.\n\n### 2. **Visualize Relationships**\nUse the **Graph** view to display an interactive graph of broader, narrower, and related terms. This helps understand the semantic structure of a concept within ETH-UDK.\n\n### 3. **Semantic Search with Vector Query**\nUse the **Vector Query** tool (requires login) to:\n- Paste in a **title**, **abstract**, or **table of contents** from a document\n- Select a classification **namespace** and **level range**\n- Submit the form to see the **most semantically relevant ETH-UDK terms**\n\nThis tool uses OpenAI embeddings and Pinecone vector search to find terms that best match the meaning of your input.\n\n\u003e ⚠️ The vector query functionality is experimental and will serve as a foundation for future AI-based workflows for subject indexing.\n\n---\n\n## 🤖 Getting Started (for Developers)\n\n\u003e 🧪 This project is also Replit-compatible. You can run it directly in Replit by forking this repo.\n\n\n### ♻️ Prerequisites\n- Python 3.11+\n- `pip`\n- Git\n\n### ⬆️ Clone the Repository\n```bash\ngit clone https://github.com/your-username/eth-udk-navigator.git\ncd eth-udk-navigator\n```\n\n### 👤 Create Virtual Environment\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n```\n\n### ⚙️ Install Dependencies\n```bash\npip install -r requirements.txt\n```\n\n### ⚡ Set up Environment Variables\n1. Copy the template:\n```bash\ncp .env.example .env\n```\n2. Fill in your `.env` file with the correct secrets:\n```\nFLASK_SECRET_KEY=your-generated-secret-key\nVECTOR_QUERY_PASSWORD=your-password\nPINECONE_API_KEY=your-pinecone-key\nOPENAI_API_KEY=your-openai-key\n```\n\n\u003e To generate a secure `FLASK_SECRET_KEY`:\n```bash\npython -c \"import secrets; print(secrets.token_hex(32))\"\n```\n\n### 🚀 Run the Application\n```bash\npython main.py\n```\nThe app will be accessible at: [http://localhost:5000](http://localhost:5000)\n\n---\n\n## 💡 Project Structure\n```\neth-udk-navigator/\n├── templates/              # HTML templates (Jinja2)\n│   ├── home.html\n│   ├── index.html\n│   ├── graph.html\n│   ├── vector_query.html\n│   ├── login.html\n│   ├── _footer.html\n│   └── _navbar.html\n├── static/                 # Static files (CSS, JS)\n│   ├── styles.css\n│   ├── nav.css\n├── data.json               # ETH-UDK classification data\n├── main.py                 # Flask app\n├── requirements.txt        # Python dependencies\n├── .env.example            # Environment variable template\n└── README.md               # This file\n```\n\n---\n\n## 🚪 Authentication for Vector Query\nThe Vector Query page is protected via password login. Users must enter a password defined in the environment variable `VECTOR_QUERY_PASSWORD`. Sessions are managed securely via Flask sessions.\n\n---\n\n## 🚀 Modifying the Project\n- Update the `data.json` file if you want to load a different classification structure.\n- To change the model or vector search logic, look into the `vector_query` route in `main.py`.\n- Semantic embeddings are created using OpenAI's `text-embedding-3-large` model. You may adapt this if you use a different provider or model.\n- The app uses Pinecone for vector search. You can swap this out for another provider or a local vector DB (e.g. `faiss`) with some adjustments.\n\n---\n\n## 📄 License\nThis project is licensed under the **Apache License 2.0**. See the [`LICENSE`](LICENSE) file for details.\n\n---\n\n## 🤝 Credits\nCreated and maintained by the ETH Library team, part of the **AI Library Automation** initiative.\n\nQuestions? Feedback? Contact us at: [api@library.ethz.ch](mailto:api@library.ethz.ch)\n\n---\n\nHappy hacking ✨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feth-library%2Feth-udk-navigator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feth-library%2Feth-udk-navigator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feth-library%2Feth-udk-navigator/lists"}