Skip to content

Commit facc760

Browse files
committed
Add prototype for justification in create_justification method
1 parent 3a3af28 commit facc760

1 file changed

Lines changed: 2 additions & 120 deletions

File tree

owlapy/owl_reasoner.py

Lines changed: 2 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,110 +1018,6 @@ def reset_and_disable_cache(self):
10181018

10191019

10201020
class SyncReasoner(AbstractOWLReasoner):
1021-
1022-
# def create_justifications(self, owl_individuals: Set[OWLNamedIndividual] = None,
1023-
# owl_class_expression: OWLClassExpression = None) -> List[Set[OWLAxiom]]:
1024-
# """
1025-
# Generate justifications for why the given individual(s) are inferred to be instances of the specified class.
1026-
#
1027-
# Args:
1028-
# owl_individuals (Set[OWLNamedIndividual]): Set of individuals to explain.
1029-
# owl_class_expression (OWLClassExpression): Class expression to justify.
1030-
#
1031-
# Returns:
1032-
# List of sets of OWLAxioms, each representing a justification.
1033-
# """
1034-
# if owl_individuals is None or owl_class_expression is None:
1035-
# raise ValueError("Both owl_individuals and owl_class_expression are required.")
1036-
#
1037-
# import com.clarkparsia.owlapi.explanation.BlackBoxExplanation;
1038-
# import com.clarkparsia.owlapi.explanation.ExplanationGenerator;
1039-
# import com.clarkparsia.owlapi.explanation.SingleExplanationGeneratorImpl;
1040-
# #from org.semanticweb.owl.explanation.api import ExplanationGeneratorFactory
1041-
# # from org.semanticweb.owlapi.explanation.impl import ExplanationGeneratorFactoryImpl
1042-
#
1043-
# # from org.semanticweb.owl.explanation.api import Explanation
1044-
# # from org.semanticweb.owl.explanation.impl.blackbox import BlackBoxExplanation
1045-
# from org.semanticweb.owlapi.explanation import ExplanationGeneratorFactoryImpl
1046-
#
1047-
# justifications = []
1048-
#
1049-
# # Java OWL API types
1050-
# j_class_expr = self.mapper.map_(owl_class_expression)
1051-
# j_ontology = self._owlapi_ontology
1052-
#
1053-
# # Explanation setup
1054-
# factory = ExplanationGeneratorFactoryImpl()
1055-
# generator = factory.createExplanationGenerator(self._owlapi_reasoner)
1056-
#
1057-
# for ind in owl_individuals:
1058-
# j_individual = self.mapper.map_(ind)
1059-
# axiom = self._owlapi_manager.getOWLDataFactory().getOWLClassAssertionAxiom(j_class_expr, j_individual)
1060-
#
1061-
# # Get multiple explanations (justifications)
1062-
# explanations = generator.getExplanations(axiom, 10) # limit to 10 justifications
1063-
# for explanation in explanations:
1064-
# axiom_set = explanation.getAxioms()
1065-
# py_axioms = {self.mapper.map_(ax) for ax in axiom_set}
1066-
# justifications.append(py_axioms)
1067-
#
1068-
# return justifications
1069-
1070-
# def create_justifications(self, owl_individuals: Set[OWLNamedIndividual] = None,
1071-
# owl_class_expression: OWLClassExpression = None) -> List[Set[OWLAxiom]]:
1072-
# """
1073-
# Generate justifications for why the given individual(s) are inferred to be instances of the specified class.
1074-
#
1075-
# Args:
1076-
# owl_individuals (Set[OWLNamedIndividual]): Set of individuals to explain.
1077-
# owl_class_expression (OWLClassExpression): Class expression to justify.
1078-
#
1079-
# Returns:
1080-
# List of sets of OWLAxioms, each representing a justification.
1081-
# """
1082-
# if owl_individuals is None or owl_class_expression is None:
1083-
# raise ValueError("Both owl_individuals and owl_class_expression are required.")
1084-
#
1085-
# # Import Clark & Parsia explanation classes via JPype
1086-
# from com.clarkparsia.owlapi.explanation import BlackBoxExplanation, SingleExplanationGeneratorImpl, ExplanationGenerator
1087-
# from com.clarkparsia.owlapi.explanation.util import MultipleExplanationGenerator
1088-
# # Import PelletReasonerFactory
1089-
# from openllet.owlapi import PelletReasonerFactory
1090-
#
1091-
# justifications = []
1092-
#
1093-
# # Map to Java OWL API types
1094-
# j_class_expr = self.mapper.map_(owl_class_expression)
1095-
# j_ontology = self._owlapi_ontology
1096-
# j_reasoner = self._owlapi_reasoner
1097-
# j_data_factory = self._owlapi_manager.getOWLDataFactory()
1098-
#
1099-
# # Create the reasoner factory (not the reasoner instance)
1100-
# reasoner_factory = PelletReasonerFactory.getInstance()
1101-
#
1102-
# # Create explanation generator
1103-
# blackbox_exp = BlackBoxExplanation(j_ontology,reasoner_factory, j_reasoner)
1104-
# mult_expl_gen = MultipleExplanationGenerator(blackbox_exp)
1105-
# #explanation_gen = SingleExplanationGeneratorImpl(blackbox_exp)
1106-
# explanation_gen = blackbox_exp
1107-
# print("explanation_gen ",explanation_gen)
1108-
# print("Explanation generator class:", explanation_gen.getClass().getName())
1109-
#
1110-
# # For each individual, get explanations for class assertion axiom
1111-
# for ind in owl_individuals:
1112-
# j_individual = self.mapper.map_(ind)
1113-
# axiom = j_data_factory.getOWLClassAssertionAxiom(j_class_expr, j_individual)
1114-
#
1115-
# # Get multiple explanations (limit 10)
1116-
# explanations = explanation_gen.getExplanations(axiom, 10)
1117-
#
1118-
# for explanation in explanations:
1119-
# # explanation is a Set<OWLAxiom>
1120-
# py_axioms = {self.mapper.map_(ax) for ax in explanation}
1121-
# justifications.append(py_axioms)
1122-
#
1123-
# return justifications
1124-
11251021
def create_justifications(self, owl_individuals: Set[OWLNamedIndividual] = None,
11261022
owl_class_expression: OWLClassExpression = None) -> List[Set[OWLAxiom]]:
11271023
"""
@@ -1140,19 +1036,15 @@ def create_justifications(self, owl_individuals: Set[OWLNamedIndividual] = None,
11401036
# Import necessary Java classes
11411037
from com.clarkparsia.owlapi.explanation import BlackBoxExplanation, ExplanationGenerator,HSTExplanationGenerator,SatisfiabilityConverter
11421038
from openllet.owlapi import PelletReasonerFactory
1143-
from org.semanticweb.owlapi.model import OWLClassExpression
1144-
1145-
justifications = []
11461039

11471040
# Map Python OWL API types to Java OWL API types
11481041
j_class_expr = self.mapper.map_(owl_class_expression)
1149-
#print("j_class_expr", j_class_expr)
11501042
j_individual = self.mapper.map_(owl_individuals)
1151-
#print("j_individual",j_individual)
11521043
j_ontology = self._owlapi_ontology
1153-
#print("j_ontology", j_ontology)
11541044
j_reasoner = self._owlapi_reasoner
11551045
j_data_factory = self._owlapi_manager.getOWLDataFactory()
1046+
1047+
11561048
# owl_individuals_istances = self._instances(owl_class_expression, direct=False)
11571049
# print("owl_individuals_istances", owl_individuals_istances)
11581050
# j_individuals= self.mapper.map_(owl_individuals_istances)
@@ -1165,14 +1057,7 @@ def create_justifications(self, owl_individuals: Set[OWLNamedIndividual] = None,
11651057
blackbox_exp = BlackBoxExplanation(j_ontology, reasoner_factory, j_reasoner)
11661058

11671059
explanation_gen = HSTExplanationGenerator(blackbox_exp)
1168-
#j_explanations = explanation_gen.getExplanations(j_class_expr)
11691060
converter = SatisfiabilityConverter(j_data_factory)
1170-
#print("j_explanations",j_explanations)
1171-
1172-
1173-
# ExplanationGenerator implements ExplanationGenerator interface
1174-
# explanation_gen = blackbox_exp
1175-
11761061
justifications = []
11771062

11781063

@@ -1185,9 +1070,6 @@ def create_justifications(self, owl_individuals: Set[OWLNamedIndividual] = None,
11851070
# Step 2: Convert to unsatisfiable class
11861071
unsat_class = converter.convert(class_assertion_axiom)
11871072

1188-
1189-
# print("class_assertion_axiom",class_assertion_axiom)
1190-
11911073
# Get justifications
11921074
j_explanations = explanation_gen.getExplanations(unsat_class)
11931075

0 commit comments

Comments
 (0)