Spaces:
Sleeping
Sleeping
# app_logic.py | |
import requests | |
import json | |
from py2neo import Graph, Node, Relationship | |
def run_my_application(): | |
""" | |
Fetch and process a remote JSON file. | |
Replace this with your real application logic. | |
""" | |
# json_file_path = ["https://arinsight.co/skills/Customer_Service_skills.json", "https://arinsight.co/skills/Computer_Programming_skills.json", | |
# "https://arinsight.co/skills/Data_Science_skills.json", "https://arinsight.co/skills/Communications_skills.json", | |
# "https://arinsight.co/skills/Cleaning_and_Facilities_skills.json", | |
# "https://arinsight.co/skills/Caregiving_skills.json","https://arinsight.co/skills/Business_Development_and_Sales_skills.json", | |
# "https://arinsight.co/skills/Arts_and_Design_skills.json", "https://arinsight.co/skills/Architecture_and_Construction_skills.json", | |
# "https://arinsight.co/skills/Civil_Engineering_skills.json"] | |
json_file_path = ["https://arinsight.co/skills/Accounting_and_Finance_skills.json"] | |
# Connection to Neo4j | |
graph = Graph("bolt://20.64.235.115:7687", auth=("neo4j", "123456789")) | |
# Read the JSON file | |
# json_file_path = ["Engineering_skills.json", "Energy and Utilities_skills.json", "Electrical Engineering_skills.json"] | |
# graph.delete_all() | |
for file in json_file_path: | |
# with open(file, "r") as file: | |
# data = json.load(file) | |
response = requests.get(file) | |
# # Raise an error if the request failed | |
response.raise_for_status() | |
# # Parse the JSON content | |
data = response.json() | |
# Clear the graph database before starting | |
# Create graph nodes and relationships | |
for entry in data: | |
primary_skill = entry["Primary Skill"] | |
secondary_skill = entry["Secondary Skill"] | |
primary_description = entry.get("Description", "") | |
educational_alignment = entry.get("Educational Alignment", "") | |
curriculum_areas = "; ".join(entry.get("Curriculum Areas", [])) | |
tertiary_skills = entry["Tertiary Skills"] | |
# Create or get the Primary Skill node | |
primary_node = Node("PrimarySkill", name=primary_skill, description=primary_description) | |
graph.merge(primary_node, "PrimarySkill", "name") | |
# Create the Secondary Skill node | |
secondary_node = Node( | |
"SecondarySkill", | |
name=secondary_skill, | |
description=primary_description, | |
educational_alignment=educational_alignment, | |
curriculum_areas=curriculum_areas, | |
) | |
graph.merge(secondary_node, "SecondarySkill", "name") | |
# Relationship: PrimarySkill -> has_secondary -> SecondarySkill | |
relationship = Relationship(primary_node, "HAS_SECONDARY", secondary_node) | |
graph.merge(relationship) | |
# Create Tertiary Skills nodes and relationships | |
for tertiary_skill in tertiary_skills: | |
tertiary_node = Node("TertiarySkill", name=tertiary_skill, description="") | |
graph.merge(tertiary_node, "TertiarySkill", "name") | |
# Relationship: SecondarySkill -> has_tertiary -> TertiarySkill | |
tertiary_relationship = Relationship(secondary_node, "HAS_TERTIARY", tertiary_node) | |
graph.merge(tertiary_relationship) | |
return "Graph database has been populated." | |
# for file_url in json_file_paths: | |
# # Fetch the content from the URL | |
# response = requests.get(file_url) | |
# # Raise an error if the request failed | |
# response.raise_for_status() | |
# # Parse the JSON content | |
# data = response.json() | |
# # Assuming you want to return the 'Primary Skill' of the first item | |
# return data[0]['Primary Skill'] | |