Skip to content

Commit

Permalink
first working version of tabular data to rdf knowledge graph implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
Demirrr committed Nov 11, 2024
1 parent 527ac12 commit 18b973a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
4 changes: 0 additions & 4 deletions owlapy/util_owl_static_funcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,6 @@ def save_owl_class_expressions(expressions: OWLClassExpression | List[OWLClassEx
ontology.add_axiom(equivalent_classes_axiom)
ontology.save(path=path, inplace=False, rdf_format=rdf_format)



def csv_to_rdf_kg(path_csv:str=None,path_kg:str=None,namespace:str=None):
"""
Transfroms a CSV file to an RDF Knowledge Graph in RDF/XML format.
Expand Down Expand Up @@ -107,7 +105,6 @@ def csv_to_rdf_kg(path_csv:str=None,path_kg:str=None,namespace:str=None):
print(row.to_dict())
i=OWLNamedIndividual(iri=f"{namespace}#{str(index)}")
for column_name, value in row.to_dict().items():

if isinstance(value, float):
axiom = OWLDataPropertyAssertionAxiom(subject=i,
property_=OWLDataProperty(iri=f"{namespace}#ID_{str(column_name)}"),
Expand All @@ -116,5 +113,4 @@ def csv_to_rdf_kg(path_csv:str=None,path_kg:str=None,namespace:str=None):

else:
raise NotImplementedError(f"How to represent value={value} has not been decided")

ontology.save(path=path_kg, inplace=False)
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
from owlapy.util_owl_static_funcs import save_owl_class_expressions
from owlapy.util_owl_static_funcs import save_owl_class_expressions, csv_to_rdf_kg
from owlapy.class_expression import OWLClass, OWLObjectIntersectionOf, OWLObjectSomeValuesFrom
from owlapy.owl_property import OWLObjectProperty
from owlapy import owl_expression_to_sparql, owl_expression_to_dl
from owlapy.owl_ontology_manager import OntologyManager
from owlapy.owl_axiom import OWLDeclarationAxiom, OWLClassAssertionAxiom
from owlapy.owl_individual import OWLNamedIndividual, IRI
from sklearn.datasets import load_iris
import pandas as pd
import rdflib

class TestRunningExamples:
Expand All @@ -22,4 +24,13 @@ def test_readme(self):
path="owl_class_expressions.owl",
rdf_format= 'rdfxml')
g=rdflib.Graph().parse("owl_class_expressions.owl")
assert len(g)==22
assert len(g)==22

def test_csv_to_kg(self):
data = load_iris()
# Convert to DataFrame
df = pd.DataFrame(data.data, columns=data.feature_names)
df['target'] = data.target
# Save as CSV
df.to_csv("iris_dataset.csv", index=False)
csv_to_rdf_kg("iris_dataset.csv", path_kg="iris_kg.owl", namespace="http://example.com/society")

0 comments on commit 18b973a

Please sign in to comment.