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

ale at codespeak.net ale at codespeak.net
Wed Aug 2 10:26:26 CEST 2006


Author: ale
Date: Wed Aug  2 10:26:25 2006
New Revision: 30876

Modified:
   pypy/dist/pypy/lib/pyontology/pyontology.py
   pypy/dist/pypy/lib/pyontology/test/test_ontology.py
Log:
Better support for literals, bugfixes

Modified: pypy/dist/pypy/lib/pyontology/pyontology.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/pyontology.py	(original)
+++ pypy/dist/pypy/lib/pyontology/pyontology.py	Wed Aug  2 10:26:25 2006
@@ -6,9 +6,9 @@
 from constraint_classes import *
 import sys, py
 import time
-from pypy.tool.ansi_print import ansi_log
 log = py.log.Producer("Pyontology")
-py.log.setconsumer("Pyontology", ansi_log)
+#from pypy.tool.ansi_print import ansi_log
+py.log.setconsumer("Pyontology", None)
 
 
 namespaces = {
@@ -76,7 +76,7 @@
     def finish(self, variables, glob_constraints):
         # The finish method constructs the constraints
         if not self.finished:
-            log("FINISH %s" % self.name)
+            log.finish("%s" % self.name)
         # Try to initialise constraints for this class
             if len(self.type) > 1:
                 #try to merge the domains of the types 
@@ -95,11 +95,12 @@
                     self.domains.update(dom)
                     self.in_constraint.extend(constraints)
         # Initialise constraints from the base classes
+            self.finished = True
             for cls in self.bases:
                 cls = variables[cls]
                 dom,constraint = cls.finish(variables, glob_constraints)
 
-                log("DOM %r "%dom)
+                log.finish("DOM %r "%dom)
                 # if the base class is a Restriction we shouldnt add the constraints to the store
                 if not isinstance(cls, Restriction):
                     self.domains.update(dom)
@@ -110,7 +111,6 @@
                     self.domains.update(dom)
                     log("Updating constraints %r" % constraints)
                     self.in_constraint.extend(constraints)
-            self.finished = True
             log("RESULT of finish %r, %r" %(self.domains,self.in_constraint))
             # update the store
             if ('owl_Thing' in variables.keys() and isinstance(self, ClassDomain)
@@ -145,6 +145,7 @@
         self._bases = bases
     
     def addValue(self, value):
+#        assert isinstance(value, URIRef)
         self.values[value] = True
 
     def getValues(self):
@@ -154,7 +155,8 @@
         return iter(self.values.keys())
         
     def setValues(self, values):
-        self.values = dict.fromkeys(values)
+        for val in values:
+            self.addValue(val) #self.values = dict.fromkeys(values)
 
 class FixedClassDomain(ClassDomain):
 
@@ -181,7 +183,8 @@
         return "<%s( %s, %s)>"%(self.__class__.__name__, self.name, self.uri)
 
     def __hash__(self):
-        return hash(self.uri) 
+        return hash(self.uri)
+ 
     def __eq__(self, other):
         log("CMP %r,%r"%(self,other))
         if ((hasattr(other,'uri') and self.uri == other.uri) or
@@ -465,8 +468,10 @@
             a = uris[ns] + '_' + name
             var = str(a.replace('.','_'))
             var = str(a.replace('-','_'))
-        else:
+        elif type(a) == BNode:
             var = str(a)
+        else:
+            return a
         if not cls:
             return var
         if not var in self.variables:
@@ -550,7 +555,7 @@
                 if isinstance(self.variables[avar], Thing):
                     self.variables[avar].addValue(Individual(svar, s))
                 else:
-                    self.variables[avar].addValue(s)
+                    self.variables[avar].addValue(svar)
     
     def first(self, s, var):
         pass
@@ -611,6 +616,8 @@
         var = self.flatten_rdf_list(var)
         svar = self.make_var(FixedClassDomain, s)
         res = self.variables[var].getValues()
+        for ind in res:
+            self.make_var(Thing, ind)
         self.variables[svar].setValues([
              Individual(self.make_var(None,x),x) for x in res])
     
@@ -728,7 +735,7 @@
         avar = self.make_var(None, var)
         scls = self.variables[svar]
         scls.un_constraint.append(constraint)
-        scls.value = var
+        scls.value = avar
 
     def hasValue(self, s, var):
         """ The hasValue restriction defines a class having as an extension all
@@ -762,7 +769,7 @@
             var = "%s_%s_allvalue" %(cls, prop.name)
             dom = {var : fd(prop.getValues( ))}
             # The condition should  return true if 
-            cons = Expression([cls, var], " %s[1] in %s and %s == %s[0]" %(var, val, cls, var))
+            cons = Expression([cls, var, val], " %s[1] in %s and %s == %s[0]" %(var, val, cls, var))
             return dom, [cons] 
         self.value_helper(s, var, somevalue)
 

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	Wed Aug  2 10:26:25 2006
@@ -52,7 +52,7 @@
 
 def test_addvalue():
     O = Ontology()
-    a = O.make_var(Property, 'a')
+    a = O.make_var(Property, URIRef('a'))
     O.variables[a].addValue('key', 42)
     assert O.variables[a].getValues() == [('key', 42)]
     O.variables[a].addValue('key', 43)
@@ -331,8 +331,8 @@
     O.onProperty(restrict,p)
     O.consider_triple((cls, p, 1))
     O.hasValue(restrict, 2)
-    O.type(2, URIRef(namespaces['owl']+'#Thing'))
-    O.type(1, URIRef(namespaces['owl']+'#Thing'))
+#    O.type(2, URIRef(namespaces['owl']+'#Thing'))
+#    O.type(1, URIRef(namespaces['owl']+'#Thing'))
     
     cls2 = URIRef('class2')
     obj = URIRef(namespaces['owl']+'#Thing')
@@ -364,7 +364,7 @@
     restrict = BNode('anon')
     own = [UR('first'), UR('second'), UR('third')]
     O.oneOf(restrict, own)
-    O.type(restrict, namespaces['owl']+'#Class')
+    O.type(restrict, UR(namespaces['owl']+'#Class'))
     O.consistency()
     assert len(O.rep._domains[restrict].getValues()) == 3
     assert set(O.rep._domains[restrict].getValues()) == set(own)
@@ -392,7 +392,7 @@
     restrict = BNode('anon')
     own = ['1','2','3'] 
     O.oneOf(restrict, own)
-    O.type(restrict, namespaces['owl']+'#DataRange')
+    O.type(restrict, UR(namespaces['owl']+'#DataRange'))
     O.consistency()
     assert len(O.rep._domains[restrict].getValues()) == 3
     assert set(O.rep._domains[restrict].getValues()) == set(own)
@@ -478,9 +478,9 @@
     O.differentFrom(own1, own2)
     O.differentFrom(cls, own2)
     O.differentFrom(own2,cls)
-    O.type(cls, namespaces['owl']+'#Thing')
-    O.type(own1, namespaces['owl']+'#Thing')
-    O.type(own2, namespaces['owl']+'#Thing')
+    O.type(cls, UR(namespaces['owl']+'#Thing'))
+    O.type(own1, UR(namespaces['owl']+'#Thing'))
+    O.type(own2, UR(namespaces['owl']+'#Thing'))
     O.consistency()
     assert len(O.rep._constraints) == 4
 
@@ -488,7 +488,7 @@
     O = Ontology()
     cls = BNode('anon')
     O.differentFrom(cls, cls)
-    O.type(cls, namespaces['owl']+'#Thing')
+    O.type(cls, UR(namespaces['owl']+'#Thing'))
     py.test.raises(ConsistencyFailure, O.consistency)
 
 def test_sameas():
@@ -499,9 +499,9 @@
     O.sameAs(cls, own1)
     O.sameAs(own1, own2)
     O.sameAs(cls, own2)
-    O.type(cls, namespaces['owl']+'#Thing')
-    O.type(own1, namespaces['owl']+'#Thing')
-    O.type(own2, namespaces['owl']+'#Thing')
+    O.type(cls, UR(namespaces['owl']+'#Thing'))
+    O.type(own1, UR(namespaces['owl']+'#Thing'))
+    O.type(own2, UR(namespaces['owl']+'#Thing'))
     sub = URIRef('a')
     obj = URIRef(namespaces['owl']+'#ObjectProperty')
     O.type(sub, obj)
@@ -514,8 +514,8 @@
     cls = BNode('anon')
     own1 = BNode('liist1')
     O.sameAs(cls, own1)
-    O.type(cls, namespaces['owl']+'#Thing')
-    O.type(own1, namespaces['owl']+'#Thing')
+    O.type(cls, UR(namespaces['owl']+'#Thing'))
+    O.type(own1, UR(namespaces['owl']+'#Thing'))
     sub = URIRef('a')
     obj = URIRef(namespaces['owl']+'#ObjectProperty')
     O.type(sub, obj)
@@ -530,22 +530,22 @@
     # predicate p
     cls = URIRef('cls')
     O = Ontology()
-    O.add((cls, namespaces['rdfs']+'#type', namespaces['owl']+'#Class' ))
+    O.add((cls, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Class')))
     p = O.make_var(Property,URIRef('p'))
     p = URIRef('p')
-    O.add((p, namespaces['rdfs']+'#type', namespaces['owl']+'#ObjectProperty' ))
+    O.add((p, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#ObjectProperty')))
 
     restr = BNode('anon')
-    O.add((restr, namespaces['rdfs']+'#type', namespaces['owl']+'#Restriction' ))
-    O.add((restr, namespaces['rdfs']+'#onProperty', p ))
-    O.add((cls, namespaces['rdfs']+'#subClassOf',restr ))
-    O.add((restr, namespaces['rdfs']+'#maxCardinality', 2 ))
+    O.add((restr, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Restriction') ))
+    O.add((restr, UR(namespaces['rdfs']+'#onProperty'), p ))
+    O.add((cls, UR(namespaces['rdfs']+'#subClassOf'),restr ))
+    O.add((restr, UR(namespaces['rdfs']+'#maxCardinality'), 2 ))
 
     restr2 = BNode('anon2')
-    O.add((restr2, namespaces['rdfs']+'#type', namespaces['owl']+'#Restriction' ))
-    O.add((restr2, namespaces['rdfs']+'#onProperty', p ))
-    O.add((cls, namespaces['rdfs']+'#subClassOf',restr2 ))
-    O.add((restr2, namespaces['rdfs']+'#minCardinality', 3 ))
+    O.add((restr2, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Restriction') ))
+    O.add((restr2, UR(namespaces['rdfs']+'#onProperty'), p ))
+    O.add((cls, UR(namespaces['rdfs']+'#subClassOf'),restr2 ))
+    O.add((restr2, UR(namespaces['rdfs']+'#minCardinality'), 3 ))
     O.attach_fd()
     py.test.raises(ConsistencyFailure, O.consistency)
 
@@ -553,24 +553,24 @@
     cls = URIRef('cls')
     cls2 = URIRef('cls2')
     O = Ontology()
-    O.add((cls, namespaces['rdfs']+'#type', namespaces['owl']+'#Class' ))
-    O.add((cls2, namespaces['rdfs']+'#type', namespaces['owl']+'#Class' ))
+    O.add((cls, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Class')))
+    O.add((cls2, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Class')))
     p = O.make_var(Property,URIRef('p'))
     p = URIRef('p')
-    O.add((p, namespaces['rdfs']+'#type', namespaces['owl']+'#ObjectProperty' ))
+    O.add((p, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#ObjectProperty')))
 
     restr = BNode('anon')
-    O.add((restr, namespaces['rdfs']+'#type', namespaces['owl']+'#Restriction' ))
-    O.add((restr, namespaces['rdfs']+'#onProperty', p ))
-    O.add((cls, namespaces['rdfs']+'#subClassOf',restr ))
-    O.add((restr, namespaces['rdfs']+'#maxCardinality', 2 ))
+    O.add((restr, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Restriction')))
+    O.add((restr, UR(namespaces['rdfs']+'#onProperty'), p ))
+    O.add((cls, UR(namespaces['rdfs']+'#subClassOf'),restr ))
+    O.add((restr, UR(namespaces['rdfs']+'#maxCardinality'), 2 ))
 
     restr2 = BNode('anon2')
-    O.add((restr2, namespaces['rdfs']+'#type', namespaces['owl']+'#Restriction' ))
-    O.add((restr2, namespaces['rdfs']+'#onProperty', p ))
-    O.add((cls, namespaces['rdfs']+'#subClassOf',restr2 ))
-    O.add((restr2, namespaces['rdfs']+'#minCardinality', 3 ))
-    O.add((cls2, namespaces['rdfs']+'#subClassOf', cls ))
+    O.add((restr2, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Restriction')))
+    O.add((restr2, UR(namespaces['rdfs']+'#onProperty'), p ))
+    O.add((cls, UR(namespaces['rdfs']+'#subClassOf'),restr2 ))
+    O.add((restr2, UR(namespaces['rdfs']+'#minCardinality'), 3 ))
+    O.add((cls2, UR(namespaces['rdfs']+'#subClassOf'), cls ))
     O.attach_fd()
     py.test.raises(ConsistencyFailure, O.consistency)
     



More information about the Pypy-commit mailing list