diff --git a/README.md b/README.md index b13af48..d121e51 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,9 @@ pytest -p no:warnings -x # Running 103 tests takes ~ 30 mins ## Usage -In this example we start with a simple atomic class expression and move to some more complex -ones and finally render and print the last of them in description logics syntax. + +### Creating OWL Class Expressions +
Click me! ```python from owlapy.class_expression import OWLClass, OWLObjectIntersectionOf, OWLObjectSomeValuesFrom @@ -40,17 +41,13 @@ from owlapy import owl_expression_to_sparql, owl_expression_to_dl # Create the male class male = OWLClass("http://example.com/society#male") - # Create an object property using the iri as a string for 'hasChild' property. hasChild = OWLObjectProperty("http://example.com/society#hasChild") - # Create an existential restrictions hasChild_male = OWLObjectSomeValuesFrom(hasChild, male) - # Let's make it more complex by intersecting with another class teacher = OWLClass("http://example.com/society#teacher") teacher_that_hasChild_male = OWLObjectIntersectionOf([hasChild_male, teacher]) - # You can render and print owl class expressions in description logics syntax (and vice-versa) print(owl_expression_to_dl(teacher_that_hasChild_male)) # (∃ hasChild.male) ⊓ teacher @@ -68,7 +65,35 @@ class. In the above examples we have introduced 3 types of class expressions: Like we showed in this example, you can create all kinds of class expressions using the OWL objects in [owlapy api](https://dice-group.github.io/owlapy/autoapi/owlapy/index.html). -Many axioms can automatically inferred with a selected reasoner +
+ +### Logical Inference + +
Click me! + +```python +from owlapy.owl_ontology_manager import OntologyManager +from owlapy.owlapi_adaptor import OWLAPIAdaptor + +ontology_path = "KGs/Family/family-benchmark_rich_background.owl" +# Available OWL Reasoners: 'HermiT', 'Pellet', 'JFact', 'Openllet' +owlapi_adaptor = OWLAPIAdaptor(path=ontology_path, name_reasoner="Pellet") +onto = OntologyManager().load_ontology(ontology_path) +# Iterate over defined owl Classes in the signature +for i in onto.classes_in_signature(): + # Performing type inference with Pellet + instances=owlapi_adaptor.instances(i,direct=False) + print(f"Class:{i}\t Num instances:{len(instances)}") +owlapi_adaptor.stopJVM() +``` + +
+ +### Ontology Enrichment + +
Click me! + +An Ontology can be enriched by inferring many different axioms. ```python from owlapy.owlapi_adaptor import OWLAPIAdaptor @@ -86,7 +111,10 @@ adaptor.infer_axioms_and_save(output_path="KGs/Family/inferred_family-benchmark_ adaptor.stopJVM() ``` -Check also the [examples](https://github.com/dice-group/owlapy/tree/develop/examples) folder. +
+ + +Check also the [examples](https://github.com/dice-group/owlapy/tree/develop/examples) and [tests](https://github.com/dice-group/owlapy/tree/develop/tests) folders. ## How to cite Currently, we are working on our manuscript describing our framework.