From d0b914acaa84b60a0b95332cd9c21cfe06f0e62b Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Tue, 9 Dec 2025 17:55:43 +0100 Subject: [PATCH 1/4] Chore: Remove Ontology file size limit. Code duplications --- cognee/api/v1/ontologies/ontologies.py | 50 +++++--------------------- 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/cognee/api/v1/ontologies/ontologies.py b/cognee/api/v1/ontologies/ontologies.py index 130b4a862..4bd3f2cd5 100644 --- a/cognee/api/v1/ontologies/ontologies.py +++ b/cognee/api/v1/ontologies/ontologies.py @@ -5,7 +5,7 @@ from pathlib import Path from datetime import datetime, timezone from typing import Optional, List from dataclasses import dataclass - +from fastapi import UploadFile @dataclass class OntologyMetadata: @@ -45,7 +45,7 @@ class OntologyService: json.dump(metadata, f, indent=2) async def upload_ontology( - self, ontology_key: str, file, user, description: Optional[str] = None + self, ontology_key: str, file: UploadFile, user, description: Optional[str] = None ) -> OntologyMetadata: if not file.filename.lower().endswith(".owl"): raise ValueError("File must be in .owl format") @@ -57,8 +57,6 @@ class OntologyService: raise ValueError(f"Ontology key '{ontology_key}' already exists") content = await file.read() - if len(content) > 10 * 1024 * 1024: - raise ValueError("File size exceeds 10MB limit") file_path = user_dir / f"{ontology_key}.owl" with open(file_path, "wb") as f: @@ -105,47 +103,15 @@ class OntologyService: if len(set(ontology_key)) != len(ontology_key): raise ValueError("Duplicate ontology keys not allowed") - if descriptions and len(descriptions) != len(files): - raise ValueError("Number of descriptions must match number of files") - results = [] - user_dir = self._get_user_dir(str(user.id)) - metadata = self._load_metadata(user_dir) for i, (key, file) in enumerate(zip(ontology_key, files)): - if key in metadata: - raise ValueError(f"Ontology key '{key}' already exists") - - if not file.filename.lower().endswith(".owl"): - raise ValueError(f"File '{file.filename}' must be in .owl format") - - content = await file.read() - if len(content) > 10 * 1024 * 1024: - raise ValueError(f"File '{file.filename}' exceeds 10MB limit") - - file_path = user_dir / f"{key}.owl" - with open(file_path, "wb") as f: - f.write(content) - - ontology_metadata = { - "filename": file.filename, - "size_bytes": len(content), - "uploaded_at": datetime.now(timezone.utc).isoformat(), - "description": descriptions[i] if descriptions else None, - } - metadata[key] = ontology_metadata - - results.append( - OntologyMetadata( - ontology_key=key, - filename=file.filename, - size_bytes=len(content), - uploaded_at=ontology_metadata["uploaded_at"], - description=descriptions[i] if descriptions else None, - ) - ) - - self._save_metadata(user_dir, metadata) + results.append(await self.upload_ontology( + ontology_key=key, + file=file, + user=user, + description=descriptions[i] if descriptions else None, + )) return results def get_ontology_contents(self, ontology_key: List[str], user) -> List[str]: From d932ee4bd96cba2ca21b54fde43080757e218571 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Tue, 9 Dec 2025 17:58:34 +0100 Subject: [PATCH 2/4] Specify file type --- cognee/api/v1/ontologies/ontologies.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cognee/api/v1/ontologies/ontologies.py b/cognee/api/v1/ontologies/ontologies.py index 4bd3f2cd5..9ade625b0 100644 --- a/cognee/api/v1/ontologies/ontologies.py +++ b/cognee/api/v1/ontologies/ontologies.py @@ -80,7 +80,7 @@ class OntologyService: ) async def upload_ontologies( - self, ontology_key: List[str], files: List, user, descriptions: Optional[List[str]] = None + self, ontology_key: List[str], files: List[UploadFile], user, descriptions: Optional[List[str]] = None ) -> List[OntologyMetadata]: """ Upload ontology files with their respective keys. From 2ca194c28fc67501de8a661ff413f208c5b2899a Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Tue, 9 Dec 2025 18:22:44 +0100 Subject: [PATCH 3/4] fix format --- cognee/api/v1/ontologies/ontologies.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/cognee/api/v1/ontologies/ontologies.py b/cognee/api/v1/ontologies/ontologies.py index 9ade625b0..cfd42fec4 100644 --- a/cognee/api/v1/ontologies/ontologies.py +++ b/cognee/api/v1/ontologies/ontologies.py @@ -7,6 +7,7 @@ from typing import Optional, List from dataclasses import dataclass from fastapi import UploadFile + @dataclass class OntologyMetadata: ontology_key: str @@ -80,7 +81,11 @@ class OntologyService: ) async def upload_ontologies( - self, ontology_key: List[str], files: List[UploadFile], user, descriptions: Optional[List[str]] = None + self, + ontology_key: List[str], + files: List[UploadFile], + user, + descriptions: Optional[List[str]] = None, ) -> List[OntologyMetadata]: """ Upload ontology files with their respective keys. @@ -106,12 +111,14 @@ class OntologyService: results = [] for i, (key, file) in enumerate(zip(ontology_key, files)): - results.append(await self.upload_ontology( - ontology_key=key, - file=file, - user=user, - description=descriptions[i] if descriptions else None, - )) + results.append( + await self.upload_ontology( + ontology_key=key, + file=file, + user=user, + description=descriptions[i] if descriptions else None, + ) + ) return results def get_ontology_contents(self, ontology_key: List[str], user) -> List[str]: From 88f61f9bdb9093abb05ff1c70c5a0d3153c91cf5 Mon Sep 17 00:00:00 2001 From: Pavel Zorin Date: Wed, 10 Dec 2025 17:24:31 +0100 Subject: [PATCH 4/4] Added filename check --- cognee/api/v1/ontologies/ontologies.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cognee/api/v1/ontologies/ontologies.py b/cognee/api/v1/ontologies/ontologies.py index cfd42fec4..2a133bf8a 100644 --- a/cognee/api/v1/ontologies/ontologies.py +++ b/cognee/api/v1/ontologies/ontologies.py @@ -48,6 +48,8 @@ class OntologyService: async def upload_ontology( self, ontology_key: str, file: UploadFile, user, description: Optional[str] = None ) -> OntologyMetadata: + if not file.filename: + raise ValueError("File must have a filename") if not file.filename.lower().endswith(".owl"): raise ValueError("File must be in .owl format")