Further Resources
Citation
If you use our work in your research, please cite the respective publication:
# OWLAPY
@misc{baci2025owlapypythonicframeworkowl,
title={OWLAPY: A Pythonic Framework for OWL Ontology Engineering},
author={Alkid Baci and Luke Friedrichs and Caglar Demir and Axel-Cyrille Ngonga Ngomo},
year={2025},
eprint={2511.08232},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2511.08232},
}
# EBR
@misc{teyou2025neuralreasoningrobustinstance,
title={Neural Reasoning for Robust Instance Retrieval in $\mathcal{SHOIQ}$},
author={Louis Mozart Kamdem Teyou and Luke Friedrichs and N'Dah Jean Kouagou and Caglar Demir and Yasir Mahmood and Stefan Heindorf and Axel-Cyrille Ngonga Ngomo},
year={2025},
eprint={2510.20457},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2510.20457},
}
More Inside the Project
Examples and test cases provide a good starting point to get to know the project better. Find them in the folders examples and tests.
Contribution
Feel free to create a pull request and we will take a look on it. Your commitment is well appreciated!
Questions
In case you have any question or suggestion, please open an issue on our GitHub issues page.
Coverage Report
The coverage report is generated using coverage.py,
scoped to the owlapy package itself (.coveragerc) — examples/, setup.py, and
other non-library scripts are excluded since they aren’t part of the installable package.
Name Stmts Miss Cover Missing
------------------------------------------------------------------------------------------------
owlapy/__init__.py 7 0 100%
owlapy/abstracts/__init__.py 3 0 100%
owlapy/abstracts/abstract_owl_ontology.py 14 0 100%
owlapy/abstracts/abstract_owl_reasoner.py 54 16 70% 390-393, 409-419, 445, 474
owlapy/agen_kg/__init__.py 2 0 100%
owlapy/agen_kg/agent.py 34 3 91% 4-5, 132
owlapy/agen_kg/chunking_models/__init__.py 0 0 100%
owlapy/agen_kg/chunking_models/simple_chunker.py 127 0 100%
owlapy/agen_kg/domain_examples_cache.py 81 0 100%
owlapy/agen_kg/few_shot_examples.py 10 0 100%
owlapy/agen_kg/graph_extracting_models/__init__.py 3 0 100%
owlapy/agen_kg/graph_extracting_models/domain_graph_extractor.py 235 164 30% 6-7, 202-485
owlapy/agen_kg/graph_extracting_models/open_graph_extractor.py 176 48 73% 6-7, 108-110, 120-122, 150, 152, 171, 182, 202, 212, 219, 227, 236-238, 244, 249, 253, 266, 274, 284, 288-312, 328, 337, 342
owlapy/agen_kg/graph_extractor.py 620 33 95% 405, 579, 581, 615, 696, 698, 709, 713-715, 728, 737, 741, 798, 800, 808, 811, 815-817, 830, 839, 843, 901, 946, 998, 1053, 1187, 1246, 1265, 1310, 1361, 1407
owlapy/agen_kg/helper.py 34 0 100%
owlapy/agen_kg/signatures.py 135 0 100%
owlapy/agen_kg/text_loader.py 148 2 99% 153-154
owlapy/class_expression/__init__.py 9 0 100%
owlapy/class_expression/class_expression.py 38 0 100%
owlapy/class_expression/nary_boolean_expression.py 25 0 100%
owlapy/class_expression/owl_class.py 33 0 100%
owlapy/class_expression/restriction.py 321 5 98% 68-70, 73, 453
owlapy/converter.py 430 9 98% 84, 199, 366, 397, 417, 461, 472, 492, 513
owlapy/entities/__init__.py 0 0 100%
owlapy/expressivity.py 46 10 78% 59, 66-69, 74, 76, 78, 82, 88
owlapy/iri.py 75 0 100%
owlapy/marked_entity_generator_converter.py 379 7 98% 190, 220-221, 314, 339, 360, 512
owlapy/meta_classes.py 11 0 100%
owlapy/namespaces.py 27 0 100%
owlapy/owl_annotation.py 16 0 100%
owlapy/owl_axiom.py 565 4 99% 952, 1234, 1237, 1312
owlapy/owl_data_ranges.py 43 0 100%
owlapy/owl_datatype.py 22 0 100%
owlapy/owl_hierarchy.py 211 8 96% 38, 42, 265-267, 301-303, 351-353
owlapy/owl_individual.py 57 2 96% 108, 111
owlapy/owl_literal.py 516 16 97% 281, 452, 701-703, 708, 713, 718, 723, 727, 752, 862, 901, 913, 925, 945
owlapy/owl_object.py 29 0 100%
owlapy/owl_ontology.py 1335 303 77% 238-244, 267, 275-278, 382-388, 411-420, 430-436, 444-446, 466, 536, 539, 544-566, 571-588, 592-602, 612-618, 630, 633-634, 674, 679-684, 694, 699, 716, 725-736, 741-756, 767, 772, 782, 794, 798, 834, 840, 851, 857, 862-886, 891-898, 902-921, 940, 953, 992-995, 1010, 1027, 1039, 1043, 1056, 1069, 1085-1086, 1129, 1148-1153, 1159, 1178-1211, 1215, 1218-1220, 1223, 1233, 1262-1263, 1273-1276, 1279, 1285, 1303, 1306, 1309, 1312, 1315, 1323, 1397, 1417, 1435, 1450, 1456, 1655, 1884, 1910-1911, 1934-1935, 2014-2015, 2056, 2060, 2064, 2090, 2197, 2203, 2214-2215, 2219, 2235-2236, 2256, 2261, 2268-2273, 2292-2293, 2312-2316, 2319-2320, 2336-2371, 2376, 2381-2386, 2389, 2394, 2427, 2430
owlapy/owl_property.py 84 1 99% 136
owlapy/owl_reasoner.py 1331 337 75% 118, 139, 173, 185-187, 192-198, 203-205, 207-208, 212, 261-267, 273-275, 318-325, 351, 386-390, 416-419, 447-449, 451-453, 482-484, 486-488, 529, 533-534, 570, 631-633, 651-652, 663-667, 670, 700-709, 721, 726, 730, 778-781, 879-883, 901, 918-922, 930-934, 981, 992, 1044, 1067-1077, 1105-1155, 1161-1180, 1184, 1282, 1295, 1305, 1347, 1352-1364, 1377-1381, 1416, 1423-1436, 1522-1524, 1678, 1888-1915, 1946, 2081-2095, 2126, 2130, 2142, 2155-2158, 2164-2188, 2199-2201, 2205-2219, 2263-2277, 2312, 2316, 2328, 2341-2344, 2350-2376, 2387-2389, 2393-2407, 2431, 2437-2438, 2442-2453, 2477-2491, 2617, 2626, 2641, 2652-2653, 2666-2669
owlapy/owl_reasoner_rdflib.py 251 8 97% 108-111, 183-186, 297, 374
owlapy/owlapi_dlsyntax.py 50 4 92% 36, 189-191
owlapy/owlapi_mapper.py 404 26 94% 228, 308, 325-343, 624-632
owlapy/parser.py 390 11 97% 176, 376, 387, 460-461, 475, 721, 732, 816-817, 827
owlapy/providers.py 38 1 97% 56
owlapy/render.py 304 50 84% 102-137, 166-181, 199, 203, 245, 254, 259, 264, 398, 402, 409, 428, 444, 453, 458, 463, 545, 549, 554, 558, 563, 585
owlapy/scripts/__init__.py 0 0 100%
owlapy/scripts/litserve_neural_reasoner.py 22 22 0% 1-80
owlapy/scripts/owlapy_serve.py 95 10 89% 53, 59, 121-133
owlapy/scripts/run.py 20 20 0% 1-51
owlapy/static_funcs.py 34 0 100%
owlapy/swrl.py 295 8 97% 34, 78-80, 262, 332, 409, 459
owlapy/util_owl_static_funcs.py 254 12 95% 337-339, 371, 421, 522-529
owlapy/utils.py 1217 164 87% 390, 404, 493-494, 529, 537, 545, 553, 570, 579, 588, 604, 612, 620, 628, 636, 644-648, 661, 670, 679, 691, 766, 799, 808, 872, 889, 900, 903-910, 913, 996-1009, 1042, 1066, 1070, 1074, 1078, 1120, 1128-1129, 1150, 1176-1178, 1190, 1225, 1233, 1241, 1259, 1281, 1297, 1301, 1305-1311, 1318, 1330-1333, 1339-1340, 1361-1370, 1377-1383, 1392, 1396, 1459, 1469, 1571, 1585-1587, 1638-1639, 1659, 1762, 1814, 1819, 1860, 1865, 1892-1902, 1905-1911, 1914-1925, 1928-1964, 1968-1970, 1975-1979
owlapy/vocab.py 103 0 100%
------------------------------------------------------------------------------------------------
TOTAL 10763 1304 88%