Upload files to "meteorogical_data"
This commit is contained in:
73
meteorogical_data/helper_meteo.py
Normal file
73
meteorogical_data/helper_meteo.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import json
|
||||
from rdflib import Graph, Literal, Namespace, RDF, URIRef, XSD
|
||||
import os
|
||||
|
||||
# Define the namespaces
|
||||
SINCERE = Namespace("http://sincere.org/s1#")
|
||||
|
||||
|
||||
# Function to convert JSON to RDF
|
||||
def json_to_rdf(json_data, rdf_file_path):
|
||||
# Create an RDF graph
|
||||
g = Graph()
|
||||
|
||||
# Bind the SINCERE namespace
|
||||
g.bind("sincere", SINCERE)
|
||||
|
||||
# Process each entry in the data
|
||||
for i, entry in enumerate(json_data['data'], start=1):
|
||||
channel_id = entry['channel_id']
|
||||
data_value = entry['data_value']
|
||||
measurement = entry['measurement']
|
||||
time = entry['time']
|
||||
|
||||
channel_uri = URIRef(f"http://sincere.org/s1/resource/channel_{channel_id}")
|
||||
measurement_uri = URIRef(f"http://sincere.org/s1/resource/measurement_{channel_id}_{i}")
|
||||
|
||||
g.add((channel_uri, RDF.type, SINCERE.Channel))
|
||||
g.add((channel_uri, SINCERE.hasMeasurement, measurement_uri))
|
||||
|
||||
g.add((measurement_uri, RDF.type, SINCERE.Measurement))
|
||||
g.add((measurement_uri, SINCERE.measurement, Literal(measurement, datatype=XSD.string)))
|
||||
g.add((measurement_uri, SINCERE.time, Literal(time, datatype=XSD.string)))
|
||||
g.add((measurement_uri, SINCERE.value, Literal(data_value, datatype=XSD.float)))
|
||||
|
||||
# Serialize the graph in Turtle format and save to a file
|
||||
g.serialize(destination=rdf_file_path, format="turtle")
|
||||
|
||||
|
||||
# Function to read all JSON files from a folder and process each one
|
||||
def process_json_files(input_dir, output_dir):
|
||||
# Ensure the output directory exists
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
# Iterate over all files in the input directory
|
||||
count = 1
|
||||
for file_name in os.listdir(input_dir):
|
||||
file_path = os.path.join(input_dir, file_name)
|
||||
|
||||
if os.path.isfile(file_path) and file_path.endswith('.json'):
|
||||
try:
|
||||
# Read JSON data from the file
|
||||
with open(file_path, 'r') as file:
|
||||
json_data = json.load(file)
|
||||
|
||||
# Generate an RDF file path based on the file name
|
||||
rdf_file_name = "output_channel_" + str(count) + ".ttl"
|
||||
rdf_file_path = os.path.join(output_dir, rdf_file_name)
|
||||
|
||||
# Convert JSON to RDF and save to file
|
||||
json_to_rdf(json_data, rdf_file_path)
|
||||
print(f"Processed {file_name} -> {rdf_file_path}")
|
||||
count += 1
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"Error decoding JSON in file {file_name}: {e}")
|
||||
except PermissionError:
|
||||
print(f"Permission denied for file {file_name}")
|
||||
|
||||
|
||||
# Example usage
|
||||
input_dir = 'C:/Users/USER/PycharmProjects/sincere/meteorogical_data/input_json_file' # Replace with your input directory containing JSON files
|
||||
output_dir = 'C:/Users/USER/PycharmProjects/sincere/meteorogical_data/output_json_file' # Replace with your desired output directory for RDF files
|
||||
|
||||
process_json_files(input_dir, output_dir)
|
||||
Reference in New Issue
Block a user