#!/usr/bin/python3.10
# -*-coding:Utf-8 -*

import os
from rdflib import Graph, Namespace

# Création de l'ontologie et des namespaces nécessaires
graph = Graph()
DATA_FOLDER_PATH = f'{os.path.dirname(os.path.abspath(__file__))}/test_data'
ontology1_path = f"{DATA_FOLDER_PATH}/ontology_a.ttl"
graph.parse(ontology1_path, format="ttl")

OWL = Namespace("http://www.w3.org/2002/07/owl#")

def extract_some_values_from_restrictions(g: Graph):
    axioms = []
    for restriction, _, some_values_from in g.triples((None, OWL.someValuesFrom, None)):
        on_property = g.value(subject=restriction, predicate=OWL.onProperty)
        if on_property:
            axiom = (restriction, on_property, some_values_from)
            axioms.append(axiom)
    return axioms

# Tester la fonction
axioms = extract_some_values_from_restrictions(graph)
n=0
for axiom in axioms:
    n += 1
    print(f'[{n}]: {axiom}\n') 
    
# for s, p, o in graph:
#     print(s, p, o)


    def get_some_values_from_restrictions(self):
        axioms = []
        for restriction, _, some_values_from in self.graph.triples((None, OWL.someValuesFrom, None)):
            on_property = self.graph.value(subject=restriction, predicate=OWL.onProperty)
            if on_property:
                axiom = SomeValuesFromRestrictionAxiom(restriction, on_property, some_values_from)
                axioms.append(axiom)
        return axioms