fuzzy-dl-owl2 1.0.1__py3-none-any.whl → 1.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. fuzzy_dl_owl2/fuzzydl/concept/approximation_concept.py +35 -10
  2. fuzzy_dl_owl2/fuzzydl/concept/concrete/fuzzy_number/triangular_fuzzy_number.py +2 -1
  3. fuzzy_dl_owl2/fuzzydl/concept/concrete/trapezoidal_concrete_concept.py +1 -0
  4. fuzzy_dl_owl2/fuzzydl/concept/implies_concept.py +14 -11
  5. fuzzy_dl_owl2/fuzzydl/concept/operator_concept.py +10 -6
  6. fuzzy_dl_owl2/fuzzydl/concept/value_concept.py +1 -1
  7. fuzzy_dl_owl2/fuzzydl/concrete_feature.py +7 -1
  8. fuzzy_dl_owl2/fuzzydl/feature_function.py +16 -2
  9. fuzzy_dl_owl2/fuzzydl/fuzzydl_to_owl2.py +1 -1
  10. fuzzy_dl_owl2/fuzzydl/knowledge_base.py +494 -358
  11. fuzzy_dl_owl2/fuzzydl/milp/expression.py +4 -2
  12. fuzzy_dl_owl2/fuzzydl/milp/milp_helper.py +3 -2
  13. fuzzy_dl_owl2/fuzzydl/milp/variable.py +3 -0
  14. fuzzy_dl_owl2/fuzzydl/modifier/triangular_modifier.py +1 -1
  15. fuzzy_dl_owl2/fuzzydl/parser/dl_parser.py +1465 -1210
  16. fuzzy_dl_owl2/fuzzydl/query/defuzzify/mom_defuzzify_query.py +14 -7
  17. fuzzy_dl_owl2/fuzzydl/query/min/min_subsumes_query.py +2 -2
  18. fuzzy_dl_owl2/fuzzydl/util/config_reader.py +0 -6
  19. fuzzy_dl_owl2/fuzzydl/util/constants.py +10 -9
  20. fuzzy_dl_owl2/fuzzydl/util/utils.py +48 -7
  21. fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2.py +1 -1
  22. {fuzzy_dl_owl2-1.0.1.dist-info → fuzzy_dl_owl2-1.0.3.dist-info}/METADATA +51 -10
  23. {fuzzy_dl_owl2-1.0.1.dist-info → fuzzy_dl_owl2-1.0.3.dist-info}/RECORD +25 -31
  24. fuzzy_dl_owl2/fuzzydl/fuzzydl_to_owl2_java.py +0 -953
  25. fuzzy_dl_owl2/fuzzydl/parser/ParserConstants.py +0 -406
  26. fuzzy_dl_owl2/fuzzydl/parser/ebnf.lark +0 -290
  27. fuzzy_dl_owl2/fuzzydl/parser/larkx.py +0 -70
  28. fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2_java.py +0 -1409
  29. fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2_to_fuzzydl_java.py +0 -956
  30. {fuzzy_dl_owl2-1.0.1.dist-info → fuzzy_dl_owl2-1.0.3.dist-info}/LICENSE +0 -0
  31. {fuzzy_dl_owl2-1.0.1.dist-info → fuzzy_dl_owl2-1.0.3.dist-info}/WHEEL +0 -0
@@ -41,6 +41,7 @@ class MomDefuzzifyQuery(DefuzzifyQuery):
41
41
  if not s.is_consistent_kb():
42
42
  return s
43
43
  d: float = s.get_solution()
44
+ # LOM
44
45
  cloned: KnowledgeBase = kb.clone()
45
46
  ind: Individual = cloned.individuals.get(str(self.a))
46
47
  cloned.set_dynamic_blocking()
@@ -62,24 +63,30 @@ class MomDefuzzifyQuery(DefuzzifyQuery):
62
63
  return None
63
64
 
64
65
  try:
65
- self.ob_expr: Expression = Expression(Term(-1.0, q))
66
- sol1: Solution = cloned.optimize(self.obj_expr)
66
+ obj_expr: Expression = Expression(Term(-1.0, q))
67
+ sol1: Solution = cloned.optimize(obj_expr)
67
68
  if sol1.get_solution() < 0.0:
68
- sol1 = Solution(-sol1.get_solution())
69
- self.obj_expr: Expression = Expression(Term(1.0, q))
70
- sol2: Solution = cloned.optimize(self.obj_expr)
69
+ sol1 = Solution(sol1.get_solution())
70
+
71
+ # SOM
72
+ obj_expr: Expression = Expression(Term(1.0, q))
73
+ sol2: Solution = cloned.optimize(obj_expr)
71
74
  if sol2.get_solution() < 0.0:
72
- sol2 = Solution(-sol2.get_solution())
75
+ sol2 = Solution(sol2.get_solution())
76
+
77
+ # MOM
73
78
  if sol1.is_consistent_kb() and sol2.is_consistent_kb():
74
79
  value = (sol1.get_solution() + sol2.get_solution()) / 2.0
75
80
  kb.milp.print_instance_of_labels(self.f_name, str(self.a), value)
76
81
  return Solution(value)
82
+
83
+ # Returns an inconsistent KB solution
77
84
  return sol1
78
85
  except FuzzyOntologyException as e:
79
86
  traceback.print_exc()
80
87
  except InconsistentOntologyException as e:
81
88
  traceback.print_exc()
82
- return None
89
+ return Solution(False)
83
90
 
84
91
  def get_obj_expression(self, variable: Variable) -> Expression:
85
92
  return Expression(Term(-1.0, variable))
@@ -30,9 +30,9 @@ class MinSubsumesQuery(SubsumptionQuery):
30
30
  conc: Concept = OperatorConcept.lukasiewicz_or(-self.c2, self.c1)
31
31
  elif self.type == LogicOperatorType.GOEDEL:
32
32
  conc: Concept = ImpliesConcept.goedel_implies(self.c2, self.c1)
33
- elif self.type == LogicOperatorType.KLEENE_DIENES:
33
+ elif self.type == LogicOperatorType.ZADEH:
34
34
  conc: Concept = ImpliesConcept.zadeh_implies(self.c2, self.c1)
35
- else: # LogicOperatorType.ZADEH
35
+ else: # LogicOperatorType.KLEENE_DIENES
36
36
  conc: Concept = OperatorConcept.goedel_or(-self.c2, self.c1)
37
37
 
38
38
  q: Variable = kb.milp.get_new_variable(VariableType.SEMI_CONTINUOUS)
@@ -14,8 +14,6 @@ class ConfigReader:
14
14
  NUMBER_DIGITS: int = 2
15
15
  OPTIMIZATIONS: int = 1
16
16
  RULE_ACYCLIC_TBOXES: bool = True
17
- SHOW_VERSION: bool = False
18
- AUTHOR: bool = False
19
17
 
20
18
  @staticmethod
21
19
  def load_parameters(config_file: str, args: list[str]) -> None:
@@ -42,14 +40,10 @@ class ConfigReader:
42
40
  ConfigReader.NUMBER_DIGITS = int(
43
41
  round(abs(math.log10(ConfigReader.EPSILON) - 1.0))
44
42
  )
45
- ConfigReader.SHOW_VERSION = config.getboolean("DEFAULT", "showVersion")
46
43
 
47
44
  if ConfigReader.DEBUG_PRINT:
48
45
  print(f"Debugging mode = {ConfigReader.DEBUG_PRINT}")
49
46
 
50
- if config.getboolean("DEFAULT", "author"):
51
- print("Author of python-fuzzyDL: Giuseppe Filippone")
52
-
53
47
  except FileNotFoundError:
54
48
  print(f"Error: File {config_file} not found.")
55
49
  except Exception as e:
@@ -1,4 +1,3 @@
1
- import collections.abc
2
1
  import enum
3
2
  import os
4
3
  import re
@@ -362,12 +361,12 @@ class FuzzyDLKeyword(enum.Enum):
362
361
  LUKASIEWICZ = pp.CaselessKeyword("lukasiewicz")
363
362
  ZADEH = pp.CaselessKeyword("zadeh")
364
363
  CLASSICAL = pp.CaselessKeyword("classical")
365
- SUM = pp.CaselessKeyword("+")
366
- SUB = pp.CaselessKeyword("-")
367
- MUL = pp.CaselessKeyword("*")
368
- LESS_THAN_OR_EQUAL_TO = pp.CaselessKeyword("<=")
369
- GREATER_THAN_OR_EQUAL_TO = pp.CaselessKeyword(">=")
370
- EQUALS = pp.CaselessKeyword("=")
364
+ SUM = pp.Literal("+")
365
+ SUB = pp.Literal("-")
366
+ MUL = pp.Literal("*")
367
+ LESS_THAN_OR_EQUAL_TO = pp.Literal("<=")
368
+ GREATER_THAN_OR_EQUAL_TO = pp.Literal(">=")
369
+ EQUALS = pp.Literal("=")
371
370
  STRING = pp.CaselessKeyword("*string*")
372
371
  BOOLEAN = pp.CaselessKeyword("*boolean*")
373
372
  INTEGER = pp.CaselessKeyword("*integer*")
@@ -376,7 +375,7 @@ class FuzzyDLKeyword(enum.Enum):
376
375
  def get_name(self) -> str:
377
376
  return re.sub(r"[\"\']+", "", self.value.name.lower())
378
377
 
379
- def get_value(self) -> pp.CaselessKeyword:
378
+ def get_value(self) -> typing.Union[pp.CaselessKeyword, pp.Literal]:
380
379
  return self.value
381
380
 
382
381
  def __eq__(self, value: object) -> bool:
@@ -384,6 +383,8 @@ class FuzzyDLKeyword(enum.Enum):
384
383
  return self.get_name() == value.lower()
385
384
  elif isinstance(value, pp.CaselessKeyword):
386
385
  return self.get_name() == value.name.lower()
386
+ elif isinstance(value, pp.Literal):
387
+ return self.get_name() == value.name.lower()
387
388
  elif isinstance(value, FuzzyDLKeyword):
388
389
  return self.get_name() == value.get_name()
389
390
  raise NotImplementedError
@@ -419,6 +420,6 @@ class FuzzyLogic(enum.StrEnum):
419
420
  return self.value
420
421
 
421
422
 
422
- KNOWLEDGE_BASE_SEMANTICS = FuzzyLogic.CLASSICAL
423
+ KNOWLEDGE_BASE_SEMANTICS: FuzzyLogic = FuzzyLogic.CLASSICAL
423
424
  MAXVAL: float = 2.147483647e12
424
425
  MAXVAL2: float = MAXVAL * 2
@@ -1,18 +1,59 @@
1
- import ast
2
- import datetime
3
1
  import functools
4
- import importlib
5
- import importlib.util
6
2
  import inspect
7
- import os
8
3
  import sys
9
- import time
10
4
  import types
11
5
  import typing
12
6
 
13
7
  from fuzzy_dl_owl2.fuzzydl.util.config_reader import ConfigReader
14
8
  from fuzzy_dl_owl2.fuzzydl.util.util import Util
15
9
 
10
+ FULL_CLASS_DEBUG_PRINT: bool = False
11
+
12
+
13
+ def debugging_wrapper(cls, func):
14
+ """
15
+ Debugging wrapper that prints before and after the method call.
16
+ """
17
+
18
+ is_static: bool = False
19
+ try:
20
+ is_static = isinstance(inspect.getattr_static(cls, func.__name__), staticmethod)
21
+ except:
22
+ pass
23
+
24
+ @functools.wraps(func)
25
+ def wrapped(*args, **kwargs):
26
+ Util.debug(
27
+ f"\t\t\t>>>>Entering {cls.__name__}:{func.__name__} with args={args if is_static else args[1:]}, kwargs={kwargs}"
28
+ )
29
+ result = func(*args, **kwargs)
30
+ Util.debug(
31
+ f"\t\t\t<<<<Leaving {cls.__name__}:{func.__name__} returned {result}"
32
+ )
33
+ return result
34
+
35
+ return wrapped
36
+
37
+
38
+ def class_debugging():
39
+ """
40
+ Decorator to wrap all methods of a class using debugging_wrapper.
41
+ """
42
+
43
+ def class_decorator(cls):
44
+ if FULL_CLASS_DEBUG_PRINT:
45
+ for attr_name in dir(cls):
46
+ attr = getattr(cls, attr_name)
47
+ # Only wrap instance methods
48
+ if isinstance(attr, types.FunctionType):
49
+ # Wrap the method
50
+ wrapped_method = debugging_wrapper(cls, attr)
51
+ setattr(cls, attr_name, wrapped_method)
52
+ return cls
53
+
54
+ return class_decorator
55
+
56
+
16
57
  def recursion_unlimited(func: typing.Callable):
17
58
  module: types.ModuleType = inspect.getmodule(func)
18
59
 
@@ -35,4 +76,4 @@ def recursion_unlimited(func: typing.Callable):
35
76
  sys.setrecursionlimit(orig_n)
36
77
  return result
37
78
 
38
- return wrapper
79
+ return wrapper
@@ -430,7 +430,7 @@ class FuzzyOwl2(object):
430
430
  Util.debug(f"Annotation for degree -> {annotation_str}")
431
431
  deg: float = FuzzyOwl2Parser.parse_string(annotation_str)[0]
432
432
  Util.debug(f"Degree for axiom -> {deg}")
433
- if not isinstance(deg, float):
433
+ if not isinstance(deg, constants.NUMBER):
434
434
  raise ValueError
435
435
  return deg
436
436
 
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fuzzy-dl-owl2
3
- Version: 1.0.1
4
- Summary:
3
+ Version: 1.0.3
4
+ Summary: A python porting of the Fuzzy Description Language (see https://www.umbertostraccia.it/cs/software/fuzzyDL/fuzzyDL.html) and the Fuzzy OWL 2 framework (see https://www.umbertostraccia.it/cs/software/FuzzyOWL/index.html).
5
5
  License: CC-BY-SA-4.0
6
6
  Author: Giuseppe Filippone
7
7
  Author-email: filipponegiuseppe94@gmail.com
@@ -12,10 +12,13 @@ Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Dist: gurobipy (>=12.0.0,<13.0.0)
15
+ Requires-Dist: networkx (>=3.3,<4.0)
15
16
  Requires-Dist: owlready2 (>=0.47,<0.48)
16
17
  Requires-Dist: pyowl2 (>=1.0.0,<2.0.0)
17
- Requires-Dist: pyparsing (>=3.1.1,<4.0.0)
18
- Requires-Dist: rdflib (>=7.1.1,<8.0.0)
18
+ Requires-Dist: pyparsing (>=3.2.3,<4.0.0)
19
+ Requires-Dist: rdflib (>=7.1.4,<8.0.0)
20
+ Requires-Dist: sortedcontainers (>=2.4.0,<3.0.0)
21
+ Requires-Dist: trycast (>=1.2.0,<2.0.0)
19
22
  Project-URL: Repository, https://github.com/giuseppefilippone/fuzzy_dl_owl2
20
23
  Description-Content-Type: text/markdown
21
24
 
@@ -38,7 +41,7 @@ Features:
38
41
  # Installation
39
42
 
40
43
  ```python
41
- pip install fuzzy-reasoner
44
+ pip install fuzzy-dl-owl2
42
45
  ```
43
46
 
44
47
 
@@ -53,6 +56,42 @@ Examples of supported Fuzzy Description Logic Constructs
53
56
 
54
57
 
55
58
 
59
+ # Directory dl-examples
60
+
61
+ The directory `dl-examples` contains a few examples of Knowledge Bases written using the Fuzzy Description Logic language.
62
+
63
+
64
+
65
+ # Configuration of the MILP solver
66
+
67
+ Since version 1.0.1 uses `Gurobi Optimizer` (see [gurobipy](https://support.gurobi.com/hc/en-us/articles/360044290292-How-do-I-install-Gurobi-for-Python)= for the Fuzzy DL reasoning, please create a GUROBI license to use this library.
68
+
69
+ For the configuration, create a `CONFIG.ini` file in the same directory used for the execution of the library.
70
+ Example of your execution directory:
71
+ ```text
72
+ your_directory
73
+ ├── CONFIG.ini
74
+ ├── your_file.py
75
+ ```
76
+
77
+ The file `CONFIG.ini` is structured as follows:
78
+ ```text
79
+ [DEFAULT]
80
+ debugPrint = False
81
+ relaxMilp = False
82
+ epsilon = 0.001
83
+ maxIndividuals = -1
84
+ ```
85
+
86
+ | Configuration Variable | Description |
87
+ |----------------------|-----------------------------------|
88
+ | debugPrint | Enable/disable debugging |
89
+ | relaxMilp | Enable/disable MILP constraint relaxation. Important: The solution may be wrong by enabling this flag |
90
+ | epsilon | Define the precision of the solution. For instance, epsilon = 0.001 means that the solution will be calculated with an accuracy to the third decimal place |
91
+ | maxIndividuals | Define the maximal number of individuals to handle. The value -1 indicate that there is no maximum |
92
+
93
+
94
+
56
95
  # Usage - Reasoning
57
96
 
58
97
  ## Knowledge base in example.fdl
@@ -102,9 +141,8 @@ fdl.translate_owl2ontology() # save example.fdl in the subdirectory "./results"
102
141
  # Project Structure
103
142
 
104
143
  ```text
105
- fuzzy_reasoner
144
+ fuzzy_dl_owl2
106
145
  ├── __init__.py
107
- ├── app.py
108
146
  ├── fuzzydl
109
147
  │   ├── __init__.py
110
148
  │   ├── assertion
@@ -177,7 +215,6 @@ fuzzy_reasoner
177
215
  │   │   ├── fuzzy_ontology_exception.py
178
216
  │   │   └── inconsistent_ontology_exception.py
179
217
  │   ├── feature_function.py
180
- │   ├── fuzzydl_to_owl2_java.py
181
218
  │   ├── fuzzydl_to_owl2.py
182
219
  │   ├── general_concept_inclusion.py
183
220
  │   ├── individual
@@ -253,8 +290,6 @@ fuzzy_reasoner
253
290
  │   └── utils.py
254
291
  └── fuzzyowl2
255
292
  ├── __init__.py
256
- ├── fuzzyowl2_java.py
257
- ├── fuzzyowl2_to_fuzzydl_java.py
258
293
  ├── fuzzyowl2_to_fuzzydl.py
259
294
  ├── fuzzyowl2.py
260
295
  ├── owl_types
@@ -290,6 +325,12 @@ fuzzy_reasoner
290
325
  └── util
291
326
  └── constants.py
292
327
  ```
328
+
329
+
330
+ # Test
331
+
332
+ The directory `test` contains the `unittest` files. In particular, the file `test_suite.py` contains all the test suite.
333
+ The directory `examples/TestSuite` contains all the knowledge bases used for the tests.
293
334
 
294
335
 
295
336
 
@@ -5,7 +5,7 @@ fuzzy_dl_owl2/fuzzydl/assertion/assertion.py,sha256=yk_yjbl6hnpJQDmjEK9EngoHaQah
5
5
  fuzzy_dl_owl2/fuzzydl/assertion/atomic_assertion.py,sha256=HfXKJwvEuHPvUVgPo-FlFo7JPPF7IOxg-3EQ2SIUuUs,506
6
6
  fuzzy_dl_owl2/fuzzydl/concept/__init__.py,sha256=ydLPXNhHQD0fvwXiCN9tJL67DB04PJFqeDRZD3I1Lgs,557
7
7
  fuzzy_dl_owl2/fuzzydl/concept/all_some_concept.py,sha256=dWnzEJNpChFuTowDLQ-_KBzgnMDsWGDxBgSlVcseDqE,2917
8
- fuzzy_dl_owl2/fuzzydl/concept/approximation_concept.py,sha256=bviAGedhVowsD81oHDm-Fszry3AlpvL9ozXP_aySOiw,5769
8
+ fuzzy_dl_owl2/fuzzydl/concept/approximation_concept.py,sha256=bxDO7rRNrRwoyv21Y6zs-7eytlD3LuZgrjedMP-ED90,6959
9
9
  fuzzy_dl_owl2/fuzzydl/concept/atomic_concept.py,sha256=vBOMkv8BuWa6EfRqQlYNZNfBCRM87omMdx0qcZsLTCQ,2648
10
10
  fuzzy_dl_owl2/fuzzydl/concept/choquet_integral.py,sha256=_3LJbQe2M1JEoscdiIPbEAixTwdd9JwEAWCmPtDNKy4,2268
11
11
  fuzzy_dl_owl2/fuzzydl/concept/concept.py,sha256=kqXDQ9JL5pl2im968Q0oK_FejJwuJlxC0GkDVkz1L3E,6318
@@ -13,16 +13,16 @@ fuzzy_dl_owl2/fuzzydl/concept/concrete/__init__.py,sha256=YFVyrRW4GuPReSC3aF5sAv
13
13
  fuzzy_dl_owl2/fuzzydl/concept/concrete/crisp_concrete_concept.py,sha256=QcJryH21vuontpw9TU_xDj9fYTk98U5PQehEuzhksKk,1607
14
14
  fuzzy_dl_owl2/fuzzydl/concept/concrete/fuzzy_concrete_concept.py,sha256=0930RSmc_PhPj8ZoPqixuf8lYy20L-Uu2QEnZROQ_4c,1596
15
15
  fuzzy_dl_owl2/fuzzydl/concept/concrete/fuzzy_number/__init__.py,sha256=n3F1MfKTr3C-ST1yiRDKdw_b6adqWNQqp26JlPL76KI,58
16
- fuzzy_dl_owl2/fuzzydl/concept/concrete/fuzzy_number/triangular_fuzzy_number.py,sha256=e0qNd77OkPESAc91KFIG5KauL3lR-IKY606AHzvCmg8,4164
16
+ fuzzy_dl_owl2/fuzzydl/concept/concrete/fuzzy_number/triangular_fuzzy_number.py,sha256=EFEGZKw85LldrddAKJuyU4Dcc2g3iblVp96d9cjT6BI,4212
17
17
  fuzzy_dl_owl2/fuzzydl/concept/concrete/left_concrete_concept.py,sha256=YDwk434lYo2RoRbmjr5T5knHLPxZpKOFxse4gQ0vn30,2015
18
18
  fuzzy_dl_owl2/fuzzydl/concept/concrete/linear_concrete_concept.py,sha256=8dG1-GqUM_bovYQJ3ckJUvhoB8AUUl3frWiNmPk32vw,2020
19
19
  fuzzy_dl_owl2/fuzzydl/concept/concrete/modified_concrete_concept.py,sha256=5PI5wwaRm31DIvOd0ayo5D20BgIUAepaD5Rkzy6lORs,2061
20
20
  fuzzy_dl_owl2/fuzzydl/concept/concrete/right_concrete_concept.py,sha256=6017uvh53z3J8SB_ANNMmEs6kpmn1bjv43n_u_9yFbs,1997
21
- fuzzy_dl_owl2/fuzzydl/concept/concrete/trapezoidal_concrete_concept.py,sha256=7UAFVMK2_phGl6H1ffphZJixcfZNid-jc-aKXZY6Dos,2638
21
+ fuzzy_dl_owl2/fuzzydl/concept/concrete/trapezoidal_concrete_concept.py,sha256=bn6VOa8b8wJ3Tfawpkj3otaedr-rxnNeC-SBTgQOOxo,2669
22
22
  fuzzy_dl_owl2/fuzzydl/concept/concrete/triangular_concrete_concept.py,sha256=-QQWFaeZ2TWC0FUmwMWkM8Rfj6Pq-EfZRyL_S67SSFw,2519
23
23
  fuzzy_dl_owl2/fuzzydl/concept/ext_threshold_concept.py,sha256=oKJwK9tIuYAxmJxLv7EqMEEUDXfiNYyG3FUzbOGiKBA,2642
24
24
  fuzzy_dl_owl2/fuzzydl/concept/has_value_concept.py,sha256=-NsRiaTzh4D1H7P9ZRmIRtvew0wZ_2DQiD7ptSecGB0,1595
25
- fuzzy_dl_owl2/fuzzydl/concept/implies_concept.py,sha256=jEREWHzWKPPNBTvurxcxl8muEmJEIhOYc1WRIeZVtAk,5184
25
+ fuzzy_dl_owl2/fuzzydl/concept/implies_concept.py,sha256=trEOpaf7CB8ZwDleR6ymhCI1vlGR87i27913OB-k1OU,5285
26
26
  fuzzy_dl_owl2/fuzzydl/concept/interface/__init__.py,sha256=Nj9tp2LOd06Ic_o0KUMxFT0sKGRWK_5fPn0nzS87UZM,349
27
27
  fuzzy_dl_owl2/fuzzydl/concept/interface/has_concept_interface.py,sha256=UOgqG0mQAm20WhnuGmyVJOhYNbZW-KrUXqLHWRcJmMg,406
28
28
  fuzzy_dl_owl2/fuzzydl/concept/interface/has_concepts_interface.py,sha256=7lHlk7OVeG-xDq92-tpWlXdTN-kJmkA6NQtAxXsxVG4,457
@@ -35,7 +35,7 @@ fuzzy_dl_owl2/fuzzydl/concept/modified/linearly_modified_concept.py,sha256=y1VuC
35
35
  fuzzy_dl_owl2/fuzzydl/concept/modified/modified_concept.py,sha256=ixCiqjjYJ0TzWGcLYPpq_zra2S4aQqk0v3IivLL7TDw,1712
36
36
  fuzzy_dl_owl2/fuzzydl/concept/modified/triangularly_modified_concept.py,sha256=vOfmTfffkk1qJtEwJnM8N3IkBZyrg0v68tG3yvHpZA0,1116
37
37
  fuzzy_dl_owl2/fuzzydl/concept/negated_nominal.py,sha256=osALiI91ryAyATdVwnr4BhhK4r5ToomX8UkF_lREvQE,1246
38
- fuzzy_dl_owl2/fuzzydl/concept/operator_concept.py,sha256=g7MYfJ7VELJXMFOF9FJgmrEhjHmGXMUT2ffIj1-4s1M,27252
38
+ fuzzy_dl_owl2/fuzzydl/concept/operator_concept.py,sha256=gip9Y9D_hDvQbq3UN8uaEK32oEscMM_TZadsZARwTlM,27466
39
39
  fuzzy_dl_owl2/fuzzydl/concept/owa_concept.py,sha256=f3qL6qPjLrnpoXkEYwXtFZox5VAFsL1JuxhFwXGlJYo,2092
40
40
  fuzzy_dl_owl2/fuzzydl/concept/qowa_concept.py,sha256=ykeY-iubzfHdEQiNMA3bubQnOMhJ8tiQYkCYJo7T788,2143
41
41
  fuzzy_dl_owl2/fuzzydl/concept/quasi_sugeno_integral.py,sha256=G8lwIrkeWZNx3SdVsYx4lq_0DIlwnsSYR-OTCD4HW1Y,1629
@@ -44,14 +44,14 @@ fuzzy_dl_owl2/fuzzydl/concept/string_concept.py,sha256=ghsBgO1N1_9g1xxHyQ8UUiwd9
44
44
  fuzzy_dl_owl2/fuzzydl/concept/sugeno_integral.py,sha256=pJ4UNGs1de9dGGEHDYL8SpQWCkOouBseus47POe0-E0,2827
45
45
  fuzzy_dl_owl2/fuzzydl/concept/threshold_concept.py,sha256=DgcqkGJncVBWq8ibvPWW3AfFt0DG6yq44DUtRm9tZJg,2678
46
46
  fuzzy_dl_owl2/fuzzydl/concept/truth_concept.py,sha256=ck0s0djtQKvAC0O95daW0Wj-jqnv67zdbl8UrByXUHw,2414
47
- fuzzy_dl_owl2/fuzzydl/concept/value_concept.py,sha256=JIrTG0cTlJV51Sj5DuOv0Dyo_LlQVhVCxNdV60UAMYE,2202
47
+ fuzzy_dl_owl2/fuzzydl/concept/value_concept.py,sha256=M5FDKsoZ3yqpRJWvjKc_knh3s7XSRzuhUbc2Jr8lH7U,2201
48
48
  fuzzy_dl_owl2/fuzzydl/concept/weighted_concept.py,sha256=CU9QD1wxB83RzFCRvY5f7vW-sB6FmStLYF2AlJeoJgg,1750
49
49
  fuzzy_dl_owl2/fuzzydl/concept/weighted_max_concept.py,sha256=sJC-llTM22k3MyIdWr2ts2yyQD0EpsIVOcrPIrm_E2U,2230
50
50
  fuzzy_dl_owl2/fuzzydl/concept/weighted_min_concept.py,sha256=S_0spN_ijtAYNq-CuKgurVuC7J9tefXG_45BMqbGoQw,2102
51
51
  fuzzy_dl_owl2/fuzzydl/concept/weighted_sum_concept.py,sha256=efVD_Cy60nd0is72pAjO6DnzWRsLg0q6cPvo5VwB0RU,2232
52
52
  fuzzy_dl_owl2/fuzzydl/concept/weighted_sum_zero_concept.py,sha256=hdQUkWA_xn-fD7F3a37KCtJrgJx3gUB9qCvGcgm59-A,2253
53
53
  fuzzy_dl_owl2/fuzzydl/concept_equivalence.py,sha256=sVzwJU0-rpDJwNG5gGjgelmqKujOPoVBsWl1ZfHDOTg,458
54
- fuzzy_dl_owl2/fuzzydl/concrete_feature.py,sha256=EBw9tlIHR0FvPVQUGAekkiItqeLo94TanUkGO0t_J3A,3276
54
+ fuzzy_dl_owl2/fuzzydl/concrete_feature.py,sha256=tWn9A1yaz2q97xGj1nF2lt15aNlPsemnzdSEWF6-28w,3434
55
55
  fuzzy_dl_owl2/fuzzydl/degree/__init__.py,sha256=dJiMu650kkRKaIbY_GHKnuF0TsiBvzvdeOe6hus8Ac4,273
56
56
  fuzzy_dl_owl2/fuzzydl/degree/degree.py,sha256=NelWpfw7UeCjc713m6tINo_fTyDMwdvVJbV0F11eTO8,1859
57
57
  fuzzy_dl_owl2/fuzzydl/degree/degree_expression.py,sha256=hfXdvJL4z0115xfLcKuFU32cAZtCqERv9kKQbZp-9DA,1597
@@ -61,33 +61,29 @@ fuzzy_dl_owl2/fuzzydl/domain_axiom.py,sha256=qPjeqmA7zQt6VT-bLtT82F74fiORPegQytd
61
61
  fuzzy_dl_owl2/fuzzydl/exception/__init__.py,sha256=IoYY5IQoU4UYyoB-dFOVLZyDvJN20kgZVBqWkF6J30w,135
62
62
  fuzzy_dl_owl2/fuzzydl/exception/fuzzy_ontology_exception.py,sha256=eH1ybBCx1QoZaf8PLCq1rC_3tiBRA-gKCwECTcUUuro,122
63
63
  fuzzy_dl_owl2/fuzzydl/exception/inconsistent_ontology_exception.py,sha256=ez0RQN4KGlNRcfB7IXfPz3bM86CFLl6zo-RRTBRpa_o,129
64
- fuzzy_dl_owl2/fuzzydl/feature_function.py,sha256=MXN8rU5moY4dWfXlfEAokEiWl_dpmcyY6OZOSN_-RaI,5898
65
- fuzzy_dl_owl2/fuzzydl/fuzzydl_to_owl2.py,sha256=6W8RA5LZ-Y2XOuA_yGlDzP1Xot4WsBprTSBVPOouS14,44978
66
- fuzzy_dl_owl2/fuzzydl/fuzzydl_to_owl2_java.py,sha256=Lo5Jh8NLTyIhzurAczMBxOyQIFCiyDixx7cUDfbTI1Q,45091
64
+ fuzzy_dl_owl2/fuzzydl/feature_function.py,sha256=KSQvCSYfJK5N6FFfDlyS1Y7UPHSYZNXzdYYZMWzXF8U,6399
65
+ fuzzy_dl_owl2/fuzzydl/fuzzydl_to_owl2.py,sha256=lr4UTDmYsl8MJVwclBTGLrAyDqLqBl8OgCE4tuTvRRM,44989
67
66
  fuzzy_dl_owl2/fuzzydl/general_concept_inclusion.py,sha256=Noom35WAeJosPrliGd9_gvEtcK4BthazsSuZH-cxfyU,2380
68
67
  fuzzy_dl_owl2/fuzzydl/individual/__init__.py,sha256=zBCa24kE2nv08VgtphjLshpbGNEARUJgCdtyv9r6JGc,110
69
68
  fuzzy_dl_owl2/fuzzydl/individual/created_individual.py,sha256=HOo_UXjPPPtm7B0a7k90kE1veuR9gOCK5hp2f_aaJnY,7653
70
69
  fuzzy_dl_owl2/fuzzydl/individual/individual.py,sha256=FgtOmJwkPUKIOr-o8a1NqHepL-sN5fGe314e895DHYg,3846
71
70
  fuzzy_dl_owl2/fuzzydl/individual/representative_individual.py,sha256=C5ZG43Xy0Iz71S5IYPzaBGeT-fWIqQGpg85DPgU1NjM,1070
72
- fuzzy_dl_owl2/fuzzydl/knowledge_base.py,sha256=E-TSCwwM29LMH_nhyKJZDvMfX4c79FNC_JfnFmB7EGg,381384
71
+ fuzzy_dl_owl2/fuzzydl/knowledge_base.py,sha256=MmzpyLpiAkxZBbRJP2IywuS0A87lmv26lYv9RyTxN74,385654
73
72
  fuzzy_dl_owl2/fuzzydl/label.py,sha256=KD39rTIlg0XhDJSVqNC6t0Pu60MVfO8xNGSjrcJFtD0,1023
74
73
  fuzzy_dl_owl2/fuzzydl/milp/__init__.py,sha256=g2oFT2Ge8W5Li2kP2CJjpjJ1a0PRI2vDoDdzYDsEtDY,246
75
- fuzzy_dl_owl2/fuzzydl/milp/expression.py,sha256=uZq4erpPO0ryh6uMlAPMzSFUrU3M_rDvZ75uU1PCIB4,6102
74
+ fuzzy_dl_owl2/fuzzydl/milp/expression.py,sha256=j_77ddxfktzjRCRmjvew6zr5Rj8pmMfL2N0PvdpGfL4,6197
76
75
  fuzzy_dl_owl2/fuzzydl/milp/inequation.py,sha256=dQhRXj7xQm6021bUV58WPNnxH7EqsonPrWOCoCBqR5A,1631
77
- fuzzy_dl_owl2/fuzzydl/milp/milp_helper.py,sha256=65u7acdBJDPKVXiwDsvfCjDqiMs0r2BnBCqy2_uHXr4,30330
76
+ fuzzy_dl_owl2/fuzzydl/milp/milp_helper.py,sha256=Dfeh7eGknCez6Ku5m7wdxsdqJkSq4vtgfH93xth7ILM,30388
78
77
  fuzzy_dl_owl2/fuzzydl/milp/show_variables_helper.py,sha256=7y-lfhoERoE8qNSMr0cq_-Ezo46BGsNszp44YSVWA2A,5754
79
78
  fuzzy_dl_owl2/fuzzydl/milp/solution.py,sha256=suoE1F2XORwzP4pNm-6Ivf6eK5Z98KFxFUdarh1CjQk,1210
80
79
  fuzzy_dl_owl2/fuzzydl/milp/term.py,sha256=IDnmmpXIgewY9NkPwM1YFzkcp21umo4ZoPBzAhGdn8Q,2202
81
- fuzzy_dl_owl2/fuzzydl/milp/variable.py,sha256=RdxRHAXS5_zKFhqt1lysPlL6qm1rWS7mRZvwxsdmJi8,2662
80
+ fuzzy_dl_owl2/fuzzydl/milp/variable.py,sha256=_qqLZpOkXCaeyguQQWLIQvTPzyPaMNSpPIAL4T0A9C8,2725
82
81
  fuzzy_dl_owl2/fuzzydl/modifier/__init__.py,sha256=mgJml-9PVs566EYpwBxfmmiw8oPXiSgJRUyIX9hiSNA,126
83
82
  fuzzy_dl_owl2/fuzzydl/modifier/linear_modifier.py,sha256=Rn6q4ytIdTiCI-TRZIK5qjWSA4K3q78fYSrYxlQklVc,2022
84
83
  fuzzy_dl_owl2/fuzzydl/modifier/modifier.py,sha256=K1QG_i0eePq49RqyPsOCYRKonmD1QFzE0WwyxOBnymo,816
85
- fuzzy_dl_owl2/fuzzydl/modifier/triangular_modifier.py,sha256=MAfQ0w91tc1fw0FCdxHyt-RHXoRKo8GOfwBqDoCpUVc,2115
86
- fuzzy_dl_owl2/fuzzydl/parser/ParserConstants.py,sha256=bGJjHMvN1w78uhs3M7rDWrIcacUrcK7BOKpQb97trgw,7628
84
+ fuzzy_dl_owl2/fuzzydl/modifier/triangular_modifier.py,sha256=9z_oVC0QidpNCEk0FsN2EDzy7lDWTXl5dNGr3sc04j4,2131
87
85
  fuzzy_dl_owl2/fuzzydl/parser/__init__.py,sha256=vs0cN8a1ATeFx1J4evw6k7mWe4zOvba_xMO2eBXZ_gc,32
88
- fuzzy_dl_owl2/fuzzydl/parser/dl_parser.py,sha256=aJ8VfiAyfHLslKZCKtht4nu8izv7tE40v4Nw4C1VWCs,81810
89
- fuzzy_dl_owl2/fuzzydl/parser/ebnf.lark,sha256=4ZIsyczm9Xfx0VvIGWlGbbc0xPN-H1tsN946bhJvfkY,14524
90
- fuzzy_dl_owl2/fuzzydl/parser/larkx.py,sha256=q6opkO8Bqh9_yKSoMY1wfVT-Vcc2v4M-mkQo43qb1kQ,1439
86
+ fuzzy_dl_owl2/fuzzydl/parser/dl_parser.py,sha256=AonhuzmnFtPS1r1mgsEEzkiepRHCclm-3FJC5NaV3VA,95312
91
87
  fuzzy_dl_owl2/fuzzydl/primitive_concept_definition.py,sha256=jQxEqwqt-VuP58i90gfzcOge-rI3BC9zvqXJgUA7eno,2331
92
88
  fuzzy_dl_owl2/fuzzydl/query/__init__.py,sha256=4952zUtxF3VDI4TWDkpYdayP71DSowCsJzYAc_fOyGY,405
93
89
  fuzzy_dl_owl2/fuzzydl/query/all_instances_query.py,sha256=IgCmHvYMiEW3MWSt-IOr42KXwz-hgCGCC6beSt-lgLM,1867
@@ -95,7 +91,7 @@ fuzzy_dl_owl2/fuzzydl/query/bnp_query.py,sha256=4yosQ3C3sCGOprO4BzZfKwy6_RYggUVl
95
91
  fuzzy_dl_owl2/fuzzydl/query/defuzzify/__init__.py,sha256=fUbdT9Q0-5c-ArHS1yxLYuf00NCHyoUPSrjpeBQ25iU,197
96
92
  fuzzy_dl_owl2/fuzzydl/query/defuzzify/defuzzify_query.py,sha256=imIHtQ6tHaKas05C4UzavOdw-FeBx716dydBiGK4o8Y,3008
97
93
  fuzzy_dl_owl2/fuzzydl/query/defuzzify/lom_defuzzify_query.py,sha256=u9R2x8WtD9eyrYRD398qop83A-bI9TrIxPDztAsHmFQ,833
98
- fuzzy_dl_owl2/fuzzydl/query/defuzzify/mom_defuzzify_query.py,sha256=U6OVNiTXJHeaizBaHe6tf-_FGDMj6No_qdhoaIp9cN8,3785
94
+ fuzzy_dl_owl2/fuzzydl/query/defuzzify/mom_defuzzify_query.py,sha256=QeplrKFLtAqNxyB0LfXRWdvdtrskGXvJuPACIHbUBMo,3882
99
95
  fuzzy_dl_owl2/fuzzydl/query/defuzzify/som_defuzzify_query.py,sha256=7ktMy78qq42lKzt5cTiCXlhPII-E9EANBowkxAkQnSQ,808
100
96
  fuzzy_dl_owl2/fuzzydl/query/instance_query.py,sha256=5loSVw5NvTJXN0RC7lDWyVR0GEzagSp3Ts_MhF8WQvE,682
101
97
  fuzzy_dl_owl2/fuzzydl/query/kb_satisfiable_query.py,sha256=78tEbsDyCrvrNKV0wCAmPc0nPL-MaPQIVC0J1OHjFE4,1086
@@ -110,7 +106,7 @@ fuzzy_dl_owl2/fuzzydl/query/min/min_instance_query.py,sha256=8TZKQZQcLsbMUFFUwLZ
110
106
  fuzzy_dl_owl2/fuzzydl/query/min/min_query.py,sha256=xM5y9w9Q3ejiRZ-uqvuD6krACGRPRyNnaHVQy0JzAhc,996
111
107
  fuzzy_dl_owl2/fuzzydl/query/min/min_related_query.py,sha256=PMstZFTXN1VsKXMs6HXb3f3AvOV7RhE7HdGZGfJ0ezM,2263
112
108
  fuzzy_dl_owl2/fuzzydl/query/min/min_satisfiable_query.py,sha256=kF-MlpBE74OYT3tv69dThuI9GD6AH85hFXPcm9xePtI,3081
113
- fuzzy_dl_owl2/fuzzydl/query/min/min_subsumes_query.py,sha256=tqueYtIYtTbJWVuK_XalK7d8CE07oG-0vkQDj40PjWo,2805
109
+ fuzzy_dl_owl2/fuzzydl/query/min/min_subsumes_query.py,sha256=4oj3-2Fx7jBOvgXnl4EwmB9oPGcQNj43aKHmn1sZtm4,2805
114
110
  fuzzy_dl_owl2/fuzzydl/query/query.py,sha256=N0Fd6SdHipTNstyfJ-O-d9b4ZWhefGAwgQVwdU_oMe8,1063
115
111
  fuzzy_dl_owl2/fuzzydl/query/related_query.py,sha256=fLuUcJr6FoX6ChS2fSR7S9eze02otdWuqWTAcAEABeU,450
116
112
  fuzzy_dl_owl2/fuzzydl/query/satisfiable_query.py,sha256=dZ--DKOplSI9Cv72UtRYpRbJpetkmk5HMToOA4RZBZw,1231
@@ -122,15 +118,13 @@ fuzzy_dl_owl2/fuzzydl/restriction/has_value_restriction.py,sha256=DL-50TlD289OXV
122
118
  fuzzy_dl_owl2/fuzzydl/restriction/restriction.py,sha256=SyeFvaJeKcTe750eAbLoAVYkWTK_UjdqWr2Lw8OF1S0,948
123
119
  fuzzy_dl_owl2/fuzzydl/role_parent_with_degree.py,sha256=1J5dtlVbiascxHBwAJ7uc97IHnJke9RWqxq5rgrrkoA,282
124
120
  fuzzy_dl_owl2/fuzzydl/util/__init__.py,sha256=44tug6cK4CwfOR865-q1FOVN34TEDzfLlaevh5YMiGo,84
125
- fuzzy_dl_owl2/fuzzydl/util/config_reader.py,sha256=TQyWZ1EMqS8WteJfHUqQG-aloyxaZ7TJd32ox1k_0CU,2063
126
- fuzzy_dl_owl2/fuzzydl/util/constants.py,sha256=PV6fSOk8rrVJ_7qnZ9xFCcjBxXpMH3mvHN83XpNaH4I,12749
121
+ fuzzy_dl_owl2/fuzzydl/util/config_reader.py,sha256=8kyrfK-wQaiGrKfrLsiVr77jg1NRaviGniWOtQwrZRU,1797
122
+ fuzzy_dl_owl2/fuzzydl/util/constants.py,sha256=_BM9maPkVPzz-GjWjVHjPEtNOA72c5R4qjP9w-2bAdQ,12817
127
123
  fuzzy_dl_owl2/fuzzydl/util/util.py,sha256=5COC79TAJz8fNrRzXLbNpAT9rLd_0KrRI1OU-hob3oU,1903
128
- fuzzy_dl_owl2/fuzzydl/util/utils.py,sha256=h18QpDSRjitsVPta_zmRvHC8HUdfFwbFqol4oLANITs,1133
124
+ fuzzy_dl_owl2/fuzzydl/util/utils.py,sha256=TPVLEL9NJXgReuxEIOTEOVYqojSymg_-kyrLETXnYdo,2344
129
125
  fuzzy_dl_owl2/fuzzyowl2/__init__.py,sha256=C44P0-Sn35FQdVMqYLzeDWa5qPmokbcs8GPiD_zQaSg,153
130
- fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2.py,sha256=xe98T3nowcOK2VJ6gZpJqTxwH0qhLzdQz3yeJbKzdJU,71313
131
- fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2_java.py,sha256=doOKO57CflVr3z2t_H5flZ6pP8rf6AMJ9dsm3DAHBAw,64476
126
+ fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2.py,sha256=YYYayCmOPA5mfjMCAFZSiNe1pyn8arr5CIALiTMTGu8,71324
132
127
  fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2_to_fuzzydl.py,sha256=yWMhk3mpAmGfLSg6buEo8pC2G-Jczy1pgiy3riaZsZY,37033
133
- fuzzy_dl_owl2/fuzzyowl2/fuzzyowl2_to_fuzzydl_java.py,sha256=m7jHxW6zi0Nn1apJ8vsoibboFl4wvfDfbxVXC5phvM4,38171
134
128
  fuzzy_dl_owl2/fuzzyowl2/owl_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
129
  fuzzy_dl_owl2/fuzzyowl2/owl_types/choquet_concept.py,sha256=ymnyNfvkvWA3y2UMXyPviD0U98vJ6jrX6zddj09SUoI,671
136
130
  fuzzy_dl_owl2/fuzzyowl2/owl_types/concept_definition.py,sha256=d5ZsEX8NN-aYJohXGzeJFhrnufCJ6AZ1YLGiclwysDc,324
@@ -162,7 +156,7 @@ fuzzy_dl_owl2/fuzzyowl2/parser/__init__.py,sha256=fKaME_uuWyG5UB7VKD-nMV-j95lC1j
162
156
  fuzzy_dl_owl2/fuzzyowl2/parser/owl2_parser.py,sha256=5eGyRbYUQNH5ZTKCjsOYOsw9Ode4lUl8eUNK4jQGZSs,19683
163
157
  fuzzy_dl_owl2/fuzzyowl2/util/__init__.py,sha256=81quoggCuIypZjZs3bbf1Ty70KHdva5RGEJxi0oC57E,25
164
158
  fuzzy_dl_owl2/fuzzyowl2/util/constants.py,sha256=05eQLYTB4CxxUZ_T-sNG9FsH8hkrBMAh2y24oiQN8xY,3904
165
- fuzzy_dl_owl2-1.0.1.dist-info/LICENSE,sha256=er4Z7Ju3OzYUG5mbhh0krYVegIuv4PgehMzihVb2wpc,20131
166
- fuzzy_dl_owl2-1.0.1.dist-info/METADATA,sha256=W2xov2rlxcA0OK9AlIiFn_DjLJG0aahhvYhya6_1-GQ,11235
167
- fuzzy_dl_owl2-1.0.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
168
- fuzzy_dl_owl2-1.0.1.dist-info/RECORD,,
159
+ fuzzy_dl_owl2-1.0.3.dist-info/LICENSE,sha256=er4Z7Ju3OzYUG5mbhh0krYVegIuv4PgehMzihVb2wpc,20131
160
+ fuzzy_dl_owl2-1.0.3.dist-info/METADATA,sha256=a39NDTTTe5Fq035nuUf-yCLjoB-dTTyLMeTSHzlR_Io,13057
161
+ fuzzy_dl_owl2-1.0.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
162
+ fuzzy_dl_owl2-1.0.3.dist-info/RECORD,,