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.

Name                                                 Stmts   Miss  Cover   Missing
----------------------------------------------------------------------------------
examples/ontology_justification.py                      49     39    20%   17-73
owlapy/__init__.py                                       5      0   100%
owlapy/abstracts/__init__.py                             3      0   100%
owlapy/abstracts/abstract_owl_ontology.py               14      1    93%   143
owlapy/abstracts/abstract_owl_reasoner.py               49     14    71%   391-394, 409-417, 439, 464
owlapy/class_expression/__init__.py                      9      0   100%
owlapy/class_expression/class_expression.py             38      2    95%   58, 62
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     19    94%   41, 49, 66-68, 71, 89, 248-249, 346, 451, 471, 518, 602-603, 641, 776, 824, 860
owlapy/converter.py                                    420    174    59%   52-68, 75-76, 79, 82, 152, 157, 169, 176, 184, 277, 294, 304-307, 313-359, 366-387, 394-401, 417-420, 431, 451, 460-481, 489-491, 498-511, 515-521, 525-548, 552-555, 559-560, 564-576, 580-587, 591-592, 621, 625-629
owlapy/entities/__init__.py                              0      0   100%
owlapy/iri.py                                           75      4    95%   58, 79, 110, 115
owlapy/meta_classes.py                                  11      0   100%
owlapy/namespaces.py                                    27      3    89%   36, 40, 43
owlapy/ontogen/__init__.py                               0      0   100%
owlapy/ontogen/data_extraction.py                      178    178     0%   1-324
owlapy/ontogen/few_shot_examples.py                     10     10     0%   1-102
owlapy/owl_annotation.py                                16      4    75%   16, 24, 42, 50
owlapy/owl_axiom.py                                    545     61    89%   39, 42, 45, 59, 113, 150, 153, 193, 201, 204, 254-257, 265, 289, 295, 298, 301, 339-342, 349, 352, 407-410, 417, 420, 481, 484, 547, 550, 563, 599, 602, 609, 612, 651, 676, 684, 725, 739, 795, 798, 829, 832, 865, 868, 901, 904, 937, 1014, 1105, 1108, 1219, 1222, 1262, 1284, 1288, 1297, 1323
owlapy/owl_data_ranges.py                               40      2    95%   46, 107
owlapy/owl_datatype.py                                  22      0   100%
owlapy/owl_hierarchy.py                                211    211     0%   3-432
owlapy/owl_individual.py                                23      0   100%
owlapy/owl_literal.py                                  516    166    68%   104, 134, 138, 140, 149-170, 181, 190-191, 213, 217, 226, 230, 239, 243, 252, 278, 282, 291, 295, 304, 308, 317, 321, 330, 334, 342, 346, 354, 358, 366, 370, 378, 382, 390, 395, 401, 405, 438, 442, 446-449, 456, 461, 466, 471, 476, 497, 505, 508, 511, 514-516, 532-534, 542, 545, 548, 562, 569-570, 577-578, 585-586, 592-593, 618, 623, 641, 654, 661, 664-666, 669, 682, 687, 698-700, 705, 710, 715, 718-720, 724, 749, 752-755, 765, 781, 784, 794, 797, 806, 809, 812, 819, 822, 825, 838-854, 857-859, 865, 871, 874, 877, 883, 886, 889, 895, 898, 901, 907, 910, 913, 919, 922, 925, 932-934, 937, 940-942, 945
owlapy/owl_object.py                                    29      4    86%   26, 83-85
owlapy/owl_ontology.py                                1168    276    76%   103, 114-117, 120, 128, 145-151, 174, 182-185, 286-292, 315-324, 329-350, 370, 440, 443, 448-470, 475-485, 495-501, 513, 516-517, 557, 562-567, 577, 582, 599, 608-619, 624-639, 650, 655, 665, 677, 681, 717, 723, 734, 740, 745-769, 774-781, 801, 814, 829-830, 853-856, 871, 888, 900, 904, 917, 930, 938-939, 946-947, 952, 961-966, 973, 976-978, 981, 991, 1017-1018, 1027, 1030, 1036, 1054, 1057, 1060, 1063, 1066, 1074, 1120, 1123-1126, 1163, 1182-1183, 1197, 1208, 1426, 1436, 1452-1453, 1476-1477, 1556-1557, 1598, 1602, 1606, 1632, 1739, 1745, 1753, 1757, 1778-1801, 1811-1842, 1845-1850, 1855, 1860-1865, 1868, 1873, 1906, 1909
owlapy/owl_property.py                                  84     13    85%   17, 24, 32, 40, 67, 76, 130, 135, 173, 177, 189, 208, 216
owlapy/owl_reasoner.py                                 907    168    81%   97, 118, 152, 164-166, 171-177, 182-184, 186-187, 191, 240-246, 252-254, 297-304, 330, 365-369, 395-398, 426-428, 430-432, 439-441, 443-444, 448, 461-463, 465-467, 472-474, 476-477, 481, 486-488, 508, 512-513, 526-528, 549, 594-596, 610-612, 630-631, 642-646, 649, 655, 679-688, 700, 705, 709, 757-760, 858-862, 880, 887, 897-901, 909-913, 954-960, 971, 1074-1088, 1174, 1193, 1229-1231, 1294, 1336, 1385, 1400, 1415-1417, 1583-1607, 1638, 1670, 1681-1682, 1695-1698
owlapy/owlapi_mapper.py                                368      8    98%   206, 485-493
owlapy/parser.py                                       371     10    97%   316, 327, 400-401, 416, 656, 667, 751-752, 763
owlapy/providers.py                                     38      3    92%   41, 54, 56
owlapy/render.py                                       305     50    84%   80-115, 144-159, 177, 181, 223, 232, 237, 242, 376, 380, 387, 406, 422, 431, 436, 441, 523, 527, 532, 536, 541, 563
owlapy/scripts/owlapy_serve.py                          95     10    89%   52, 58, 120-132
owlapy/static_funcs.py                                  34     19    44%   22-27, 32-43, 65-67
owlapy/swrl.py                                         295    100    66%   35, 38-40, 43-45, 51-53, 59, 79-81, 96, 108, 114, 122, 126, 133, 136-141, 143-148, 154, 157, 199, 202, 205, 208, 211, 220, 223-225, 237, 240, 243, 246, 249, 258, 261-263, 274, 277, 280, 283, 286, 306, 309-311, 328, 331-333, 341-342, 345, 348, 351, 354, 357, 360, 366, 369-371, 380-381, 384, 387, 390, 393, 396, 399, 405, 408-410, 424, 427, 430, 433, 436, 455, 458-460, 512-514, 517
owlapy/util_owl_static_funcs.py                        254    201    21%   55, 149-209, 214-217, 263-375, 395-421, 441-460, 476-561
owlapy/utils.py                                       1141    304    73%   44-48, 61-74, 82-83, 106-110, 127-138, 281, 285, 289, 295, 301-305, 309-313, 317, 321, 325, 331, 335, 339, 343, 347, 353, 359, 365, 369, 373, 377, 381-384, 388-391, 395, 402, 417-419, 422-431, 434, 437, 440, 443, 446, 450-456, 462-463, 478, 482, 486, 490, 494-498, 502-506, 514, 522, 530, 534-539, 543-548, 552-557, 561, 565, 569-573, 577-581, 585-589, 593-597, 601-605, 609, 613-617, 621, 625-630, 634-639, 643-648, 652, 656-660, 673-674, 735, 768, 777, 841, 858, 869, 872-879, 882, 969-974, 1007, 1031, 1035, 1039, 1043, 1085, 1093-1094, 1115, 1141-1143, 1155, 1190, 1198, 1206, 1224, 1246, 1262, 1266, 1270-1276, 1283, 1295-1298, 1304-1305, 1326-1335, 1342-1348, 1357, 1361, 1424, 1434, 1441, 1536, 1550-1552, 1603-1604, 1624, 1650, 1655, 1696, 1701, 1728-1738, 1741-1747, 1750-1761, 1764-1800, 1804-1806, 1811-1815
owlapy/utils_debug.py                                 1157   1157     0%   2-1839
owlapy/vocab.py                                        103      2    98%   124-125
setup.py                                                13     13     0%   1-53
----------------------------------------------------------------------------------
TOTAL                                                 9002   3226    64%