[pypy-svn] r21815 - in pypy/dist/pypy/lib/pyontology: . test

ale at codespeak.net ale at codespeak.net
Sun Jan 8 14:58:22 CET 2006


Author: ale
Date: Sun Jan  8 14:58:22 2006
New Revision: 21815

Modified:
   pypy/dist/pypy/lib/pyontology/pyontology.py
   pypy/dist/pypy/lib/pyontology/test/test_ontology.py
Log:
Added a test for oneof with a DataRange as object


Modified: pypy/dist/pypy/lib/pyontology/pyontology.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/pyontology.py	(original)
+++ pypy/dist/pypy/lib/pyontology/pyontology.py	Sun Jan  8 14:58:22 2006
@@ -233,7 +233,7 @@
         return Solver().solve(rep, verbose)
 
     def consistency(self, verbose=0):
-        self.rep = Repository(self.variables.keys(), self.variables, self.constraints[:])
+        self.rep = Repository(self.variables.keys(), self.variables, self.constraints)
         self.rep.consistency(verbose)
  
     def get_list(self, subject):
@@ -267,11 +267,11 @@
             return var
         if not var in self.variables.keys():
             self.variables[var] = cls(var)
-        elif type(self.variables[var]) != cls:
-            olddom = self.variables[var]
-            newdom = cls(var)
-            newdom.setValues(olddom.getValues())
-            self.variables[var] = newdom
+##        elif type(self.variables[var]) != cls:
+##            olddom = self.variables[var]
+##            newdom = cls(var)
+##            newdom.setValues(olddom.getValues())
+##            self.variables[var] = newdom
         return var 
 
     def find_prop(self, s):
@@ -374,7 +374,7 @@
 
     def oneOf(self, s, var):
         avar = self.make_var(List, var)
-        svar = self.make_var(None, s)
+        svar = self.make_var(ClassDomain, s)
         cons = OneofPropertyConstraint(svar, avar)
         self.constraints.append(cons)
 
@@ -430,15 +430,15 @@
     def maxCardinality(self, s, var):
         """ Len of finite domain of the property shall be less than or equal to var"""
         svar =self.make_var(Restriction, s)
-        avar =self.make_var(None, var)
-        constrain = MaxCardinality(avar, cls, var)
+        #avar =self.make_var(None, var)
+        constrain = MaxCardinality(svar, None, int(var))
         self.constraints.append(constrain) 
 
     def minCardinality(self, s, var):
         """ Len of finite domain of the property shall be greater than or equal to var"""
         avar = self.find_property(s)
         cls =self.make_var(None, self.find_cls(s))
-        constrain = MinCardinality(avar, cls, int(var))
+        constrain = MinCardinality(avar, None, int(var))
         self.constraints.append(constrain) 
 
     def cardinality(self, s, var):
@@ -446,7 +446,7 @@
         avar = self.find_property(s)
         cls =self.make_var(None, self.find_cls(s))
         # Check if var is an int, else find the int buried in the structure
-        constrain = Cardinality(avar, cls, int(var))
+        constrain = Cardinality(avar, None, int(var))
         self.constraints.append(constrain) 
 
     def differentFrom(self, s, var):
@@ -600,6 +600,9 @@
 
 class RangeConstraint(SubClassConstraint):
 
+    def estimateCost(self, domains):
+        return 200
+
     def narrow(self, domains):
         propdom = domains[self.variable]
         rangedom = domains[self.object]
@@ -798,5 +801,6 @@
         else:
             domains[self.variable].setValues(val)
             return 1
+
 class HasvalueConstraint:
     pass

Modified: pypy/dist/pypy/lib/pyontology/test/test_ontology.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/test/test_ontology.py	(original)
+++ pypy/dist/pypy/lib/pyontology/test/test_ontology.py	Sun Jan  8 14:58:22 2006
@@ -374,4 +374,21 @@
     O.oneOf(restrict, own)
     O.type(restrict, namespaces['owl']+'#Class')
     O.consistency(4)
+    assert len(O.rep._domains[restrict].getValues()) == 3
+
+def test_oneofdatarange():
+    O = Ontology()
+    restrict = BNode('anon')
+    own = URIRef('favlist')
+    obj = URIRef(namespaces['rdf']+'#List')
+    O.type(own, obj)
+    O.first(own, URIRef('first'))
+    O.rest(own,  URIRef('1'))
+    O.first( URIRef('1'), URIRef('second'))
+    O.rest( URIRef('1'),  URIRef('2'))
+    O.first( URIRef('2'), URIRef('third'))
+    O.rest( URIRef('2'),  URIRef(namespaces['rdf']+'#nil'))
+    O.oneOf(restrict, own)
+    O.type(restrict, namespaces['owl']+'#DataRange')
+    O.consistency(4)
     assert len(O.rep._domains[restrict].getValues()) == 3
\ No newline at end of file



More information about the Pypy-commit mailing list