import csv
from rdflib import Graph, URIRef, Literal, Namespace
from rdflib.namespace import RDF, RDFS, XSD

# Define namespaces
SINCERE = Namespace("http://sincere.org/s1#")
graph = Graph()
graph.bind("sincere", SINCERE)
graph.bind("xsd", XSD)

# Create initial triples for the station
station_uri = URIRef(SINCERE + "davis2")

# Read the CSV file and generate barometer triples
csv_file = 'outside_temp.csv'  # Replace with your CSV file path
with open(csv_file, newline='') as csvfile:
    reader = csv.DictReader(csvfile)

    # Print the headers to check what's inside
    print("CSV Headers:", reader.fieldnames)

    for i, row in enumerate(reader, start=1):
        # Normalize column names by stripping spaces and lowercasing them
        row = {key.strip().lower(): value.strip() for key, value in row.items()}

        print(row)

        temperature_uri = URIRef(SINCERE + f"davis2/temperature/{i}")

        # Add the barometer triples
        graph.add((station_uri, SINCERE.hasTemperature, temperature_uri))
        graph.add((temperature_uri, RDF.type, SINCERE.Temperature))
        graph.add((temperature_uri, SINCERE.value, Literal(row["outsidetemperature"], datatype=XSD.float)))
        graph.add((temperature_uri, SINCERE.timestamp, Literal(row["ο»ώtime"], datatype=XSD.string)))


# Save the RDF triples to a Turtle file
output_file = 'temperature-translated.ttl'
graph.serialize(destination=output_file, format='turtle')

print(f"RDF triples saved to {output_file}")
