{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/SemanticExplorerRepository.php",
"offset": 405,
"limit": 100
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/SemanticExplorerRepository.php",
"content": " public function getTaxonomyTerms(): array\n {\n return $this->db->query(\n 'SELECT t.*,\n COUNT(DISTINCT ct.chunk_id) as chunk_count,\n (SELECT COUNT(*) FROM taxonomy_terms WHERE parent_id = t.id) as children_count\n FROM taxonomy_terms t\n LEFT JOIN chunk_taxonomy ct ON t.id = ct.taxonomy_term_id\n GROUP BY t.id\n ORDER BY t.path, t.name'\n )->fetchAll();\n }\n\n public function getTaxonomyStats(): array\n {\n return $this->db->query(\n 'SELECT\n (SELECT COUNT(*) FROM taxonomy_terms) as total_terms,\n (SELECT COUNT(*) FROM taxonomy_terms WHERE parent_id IS NULL) as root_terms,\n (SELECT MAX(depth) FROM taxonomy_terms) as max_depth,\n (SELECT COUNT(DISTINCT chunk_id) FROM chunk_taxonomy) as tagged_chunks'\n )->fetch();\n }\n\n \/\/ =========================================================================\n \/\/ ONTOLOGY\n \/\/ =========================================================================\n\n public function getOntologyClasses(): array\n {\n return $this->db->query(\n 'SELECT oc.*,\n COUNT(DISTINCT ec.entity_id) as entity_count,\n (SELECT COUNT(*) FROM ontology_classes WHERE parent_class_id = oc.id) as subclass_count\n FROM ontology_classes oc\n LEFT JOIN entity_classifications ec ON oc.id = ec.ontology_class_id\n GROUP BY oc.id\n ORDER BY oc.name'\n )->fetchAll();\n }\n\n public function getOntologyStats(): array\n {\n return $this->db->query(\n 'SELECT\n (SELECT COUNT(*) FROM ontology_classes) as total_classes,\n (SELECT COUNT(*) FROM ontology_classes WHERE parent_class_id IS NULL) as root_classes,\n (SELECT COUNT(DISTINCT entity_id) FROM entity_classifications) as classified_entities'\n )->fetch();\n }\n\n \/\/ =========================================================================\n \/\/ SEMANTICS\n \/\/ =========================================================================\n\n public function getSemanticsFiltered(string $sentiment = '', int $limit = 50, int $offset = 0): array\n {\n $sql = 'SELECT cs.*, c.content, c.token_count, d.filename, d.id as document_id\n FROM chunk_semantics cs\n JOIN chunks c ON cs.chunk_id = c.id\n JOIN documents d ON c.document_id = d.id\n WHERE 1=1';\n\n $params = [];\n\n if ($sentiment !== '') {\n $sql .= ' AND cs.sentiment = :sentiment';\n $params['sentiment'] = $sentiment;\n }\n\n $sql .= ' ORDER BY cs.analyzed_at DESC LIMIT ' . $limit . ' OFFSET ' . $offset;\n\n $stmt = $this->db->prepare($sql);\n $stmt->execute($params);\n\n return $stmt->fetchAll();\n }\n\n public function getSemanticsCount(string $sentiment = ''): int\n {\n $sql = 'SELECT COUNT(*) FROM chunk_semantics cs WHERE 1=1';\n $params = [];\n\n if ($sentiment !== '') {\n $sql .= ' AND cs.sentiment = :sentiment';\n $params['sentiment'] = $sentiment;\n }\n\n $stmt = $this->db->prepare($sql);\n $stmt->execute($params);\n\n return (int) $stmt->fetchColumn();\n }\n\n public function getEntitySemanticsFiltered(string $search = '', string $type = '', int $limit = 50, int $offset = 0): array\n {\n $sql = 'SELECT e.id, e.name, e.type, e.description,\n ce.chunk_id, c.chunk_index, d.id as document_id, d.filename\n FROM entities e\n LEFT JOIN chunk_entities ce ON e.id = ce.entity_id",
"numLines": 100,
"startLine": 405,
"totalLines": 918
}
}
}