[pypy-svn] r27698 - pypy/dist/pypy/lib/pyontology

ale at codespeak.net ale at codespeak.net
Fri May 26 11:09:51 CEST 2006


Author: ale
Date: Fri May 26 11:09:50 2006
New Revision: 27698

Modified:
   pypy/dist/pypy/lib/pyontology/pyontology.py
Log:
Simplification

Modified: pypy/dist/pypy/lib/pyontology/pyontology.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/pyontology.py	(original)
+++ pypy/dist/pypy/lib/pyontology/pyontology.py	Fri May 26 11:09:50 2006
@@ -630,44 +630,30 @@
 
 #---Property restrictions------------------------------------------------------
     
-    def maxCardinality(self, s, var):
-        """ Len of finite domain of the property shall be less than or equal to var"""
+    def cardinality_helper(self, s, var, card):
         self.resolve_item(s)
-        log("%r maxCardinality %r "%(s, var))
+        log("%r %sCardinality %r "%(s, card, var))
         svar =self.make_var(Restriction, s)
         cls = list(self.graph.subjects(None,s))[0]
         self.resolve_item(cls)
         cls_name = self.make_var(ClassDomain, cls)
         prop = self.variables[svar].property
         assert prop
-        self.variables[svar].TBox[prop] = {'Cardinality': [( '<', int(var))]}
-        self.constraints.append(CardinalityConstraint(prop, cls, var, '<='))
+        comp = {'max': '<', 'min': '>'}.get(card, '=')
+        self.variables[svar].TBox[prop] = {'Cardinality': [( comp, int(var))]}
+        self.constraints.append(CardinalityConstraint(prop, cls, var, comp+'='))
 
+    def maxCardinality(self, s, var):
+        """ Len of finite domain of the property shall be less than or equal to var"""
+        self.cardinality_helper(s, var, 'max')
+        
     def minCardinality(self, s, var):
         """ Len of finite domain of the property shall be greater than or equal to var"""
-        self.resolve_item(s)
-        log("%r minCardinality %r "%(s, var))
-        svar =self.make_var(Restriction, s)
-        cls = list(self.graph.subjects(None,s))[0]
-        cls_name = self.make_var(ClassDomain, cls)
-        prop = self.variables[svar].property
-        assert prop
-        self.variables[svar].TBox[prop] = {'Cardinality': [( '>', int(var))]}
-
-        self.constraints.append(CardinalityConstraint(prop, cls, var, '>='))
+        self.cardinality_helper(s, var, 'min')
     
     def cardinality(self, s, var):
         """ Len of finite domain of the property shall be equal to var"""
-        self.resolve_item(s)
-        log("%r Cardinality %r "%(s, var))
-        svar =self.make_var(Restriction, s)
-        cls = list(self.graph.subjects(None,s))[0]
-        cls_name = self.make_var(ClassDomain, cls)
-        prop = self.variables[svar].property
-        assert prop
-        self.variables[svar].TBox[prop] = {'Cardinality': [( '=', int(var))]}
-        
-        self.constraints.append(CardinalityConstraint(prop, cls, var, '=='))
+        self.cardinality_helper(s, var, '')
     
     def hasValue(self, s, var):
         self.resolve_item(s)
@@ -729,7 +715,6 @@
         constrain = SameasConstraint(s_var, var_var)
         self.constraints.append(constrain)
 
-
     def differentFrom(self, s, var):
         s_var = self.make_var(Thing, s)
         var_var = self.make_var(Thing, var)



More information about the Pypy-commit mailing list