file42.hx 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Create Professor Node
  2. QUERY create_professor(name: String, title: String, page: String, bio: String ) =>
  3. professor <- AddN<Professor>({ name: name, title: title, page: page, bio: bio })
  4. RETURN professor
  5. // Create Department Node
  6. QUERY create_department(name: String) =>
  7. department <- AddN<Department>({ name: name })
  8. RETURN department
  9. // Create University Node
  10. QUERY create_university(name: String) =>
  11. university <- AddN<University>({ name: name })
  12. RETURN university
  13. // Create Lab Node
  14. QUERY create_lab(name: String, research_focus: String) =>
  15. lab <- AddN<Lab>({ name: name, research_focus: research_focus })
  16. RETURN lab
  17. // Create Research Area Node
  18. QUERY create_research_area(area: String) =>
  19. research_area <- AddN<ResearchArea>({ research_area: area })
  20. RETURN research_area
  21. // Link Professor to Department
  22. QUERY link_professor_to_department(professor_id: ID, department_id: ID) =>
  23. professor <- N<Professor>(professor_id)
  24. department <- N<Department>(department_id)
  25. edge <- AddE<HasDepartment>::From(professor)::To(department)
  26. RETURN edge
  27. // Link Professor to University
  28. QUERY link_professor_to_university(professor_id: ID, university_id: ID) =>
  29. professor <- N<Professor>(professor_id)
  30. university <- N<University>(university_id)
  31. edge <- AddE<HasUniversity>::From(professor)::To(university)
  32. RETURN edge
  33. // Link Professor to Lab
  34. QUERY link_professor_to_lab(professor_id: ID, lab_id: ID) =>
  35. professor <- N<Professor>(professor_id)
  36. lab <- N<Lab>(lab_id)
  37. edge <- AddE<HasLab>::From(professor)::To(lab)
  38. RETURN edge
  39. // Link Professor to Research Area
  40. QUERY link_professor_to_research_area(professor_id: ID, research_area_id: ID) =>
  41. professor <- N<Professor>(professor_id)
  42. research_area <- N<ResearchArea>(research_area_id)
  43. edge <- AddE<HasResearchArea>::From(professor)::To(research_area)
  44. RETURN edge
  45. // Search Similar Professors based on Research Area + Description Embedding
  46. QUERY search_similar_professors_by_research_area_and_description(query_vector: [F64], k: I64) =>
  47. vecs <- SearchV<ResearchAreaAndDescriptionEmbedding>(query_vector, k)
  48. professors <- vecs::In<HasResearchAreaAndDescriptionEmbedding>
  49. RETURN professors
  50. // Get the actual string data of a professor's research area given professor ID
  51. QUERY get_professor_research_areas_with_descriptions(professor_id: ID) =>
  52. research_areas <- N<Professor>(professor_id)::Out<HasResearchAreaAndDescriptionEmbedding>::{areas_and_descriptions: areas_and_descriptions}
  53. RETURN research_areas
  54. QUERY create_research_area_embedding(professor_id: ID, areas_and_descriptions: String, vector: [F64]) =>
  55. professor <- N<Professor>(professor_id)
  56. research_area <- AddV<ResearchAreaAndDescriptionEmbedding>(vector, { areas_and_descriptions: areas_and_descriptions })
  57. edge <- AddE<HasResearchAreaAndDescriptionEmbedding>::From(professor)::To(research_area)
  58. RETURN research_area
  59. // GET Queries //
  60. QUERY get_professors_by_university_name(university_name: String) =>
  61. professors <- N<Professor>::Out<HasUniversity>::WHERE(_::{name}::EQ(university_name))
  62. RETURN professors
  63. QUERY get_professor_by_research_area_name(research_area_name: String) =>
  64. professors <- N<Professor>::Out<HasResearchArea>::WHERE(_::{research_area}::EQ(research_area_name))
  65. RETURN professors
  66. QUERY get_professors_by_department_name(department_name: String) =>
  67. professors <- N<Professor>::Out<HasDepartment>::WHERE(_::{name}::EQ(department_name))
  68. RETURN professors