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     20    94%   41, 49, 66-68, 71, 89, 248-249, 346, 451, 471, 518, 602-603, 641, 686, 776, 824, 860
owlapy/converter.py                                    420      9    98%   65, 157, 325, 356, 376, 420, 431, 451, 472
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     14    93%   38, 42, 157, 176, 179, 189, 192, 207, 265-267, 301-303, 351-353
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      3    90%   83-85
owlapy/owl_ontology.py                                1168    274    77%   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, 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     84    67%   172-173, 177-178, 185, 264, 314, 319, 332-373, 418, 476-561
owlapy/utils.py                                       1141    158    86%   359, 373, 462-463, 498, 506, 514, 522, 539, 548, 557, 573, 581, 589, 597, 605, 613-617, 630, 639, 648, 660, 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, 1303-1305, 1326-1335, 1342-1348, 1357, 1361, 1424, 1434, 1536, 1550-1552, 1603-1604, 1624, 1650, 1655, 1696, 1701, 1728-1738, 1741-1747, 1750-1761, 1764-1800, 1804-1806, 1811-1815
owlapy/vocab.py                                        103      2    98%   124-125
setup.py                                                13     13     0%   1-53
----------------------------------------------------------------------------------
TOTAL                                                 7845   1442    82%