[pypy-svn] r26971 - in pypy/dist/pypy/lib/pyontology: . test
ale at codespeak.net
ale at codespeak.net
Mon May 8 17:59:08 CEST 2006
Author: ale
Date: Mon May 8 17:59:08 2006
New Revision: 26971
Modified:
pypy/dist/pypy/lib/pyontology/constraint_classes.py
pypy/dist/pypy/lib/pyontology/pyontology.py
pypy/dist/pypy/lib/pyontology/test/test_ontology.py
Log:
a few bugfixes
Modified: pypy/dist/pypy/lib/pyontology/constraint_classes.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/constraint_classes.py (original)
+++ pypy/dist/pypy/lib/pyontology/constraint_classes.py Mon May 8 17:59:08 2006
@@ -101,7 +101,7 @@
vals += superdom.getValues()
vals += subdom.getValues() +[self.variable]
superdom.setValues(vals)
-
+
return 0
class DisjointClassConstraint(SubClassConstraint):
@@ -244,23 +244,26 @@
"""Contraint: all values must be distinct"""
def narrow(self, domains):
- pass
"""narrowing algorithm for the constraint"""
-# domain = domains[self.variable].getValues()
-# for cls, val in domain:
-# for v in val:
-# domains[self.variable].addValue(cls,v)
+ domain = domains[self.variable].getValues()
+ for cls, val in domain:
+ for v in val:
+ if v in domains[self.variable]._dict.keys():
+ [domains[self.variable].addValue(cls,x)
+ for x in domains[self.variable]._dict[v]]
class SymmetricConstraint(OwlConstraint):
"""Contraint: all values must be distinct"""
def narrow(self, domains):
"""narrowing algorithm for the constraint"""
- domain = domains[self.variable].getValues()
+ prop = domains[self.variable]
+ domain = prop.getValues()
for cls, val in domain:
- if not (val, cls) in domain:
- domain.append((val,cls))
- domains[self.variable].setValues(domain)
+ for v in val:
+ if not v in prop._dict.keys() or not cls in prop._dict[v]:
+ prop.addValue(v,cls)
+
class InverseofConstraint(SubClassConstraint):
"""Contraint: all values must be distinct"""
@@ -272,12 +275,14 @@
sub_domain = domains[self.variable].getValues()
res = []
for cls, val in obj_domain:
- if not (val,cls) in sub_domain:
- raise ConsistencyFailure("Inverseof failed for (%r, %r) in %r" %
+ for v in val:
+ if not (v,cls) in sub_domain:
+ raise ConsistencyFailure("Inverseof failed for (%r, %r) in %r" %
(val, cls, sub_domain) )
for cls, val in sub_domain:
- if not (val,cls) in obj_domain:
- raise ConsistencyFailure("Inverseof failed for (%r, %r) in %r" %
+ for v in val:
+ if not (val,cls) in obj_domain:
+ raise ConsistencyFailure("Inverseof failed for (%r, %r) in %r" %
(val, cls, obj_domain))
class DifferentfromConstraint(SubClassConstraint):
Modified: pypy/dist/pypy/lib/pyontology/pyontology.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/pyontology.py (original)
+++ pypy/dist/pypy/lib/pyontology/pyontology.py Mon May 8 17:59:08 2006
@@ -133,6 +133,14 @@
else:
self._dict[k] = [ x for x in vals if x != v]
+ def __contains__(self, (cls, val)):
+ if not cls in self._dict.keys():
+ return False
+ vals = self._dict[cls]
+ if val in vals:
+ return True
+ return False
+
class ObjectProperty(Property):
pass
@@ -546,29 +554,35 @@
self.constraints.append(constrain)
def hasValue(self, s, var):
+ self.resolve_item(s)
self.resolve_item(var)
svar = self.make_var(Restriction, s)
avar = self.make_var(None, var)
+ prop = self.variables[svar].property
restr = self.variables[svar]
- restr.TBox['hasValue'] = [('hasvalue', var)]
+ restr.TBox[prop] = {'hasValue' : [('hasvalue', var)]}
# constrain = HasvalueConstraint(svar, avar)
# self.constraints.append(constrain)
def allValuesFrom(self, s, var):
+ self.resolve_item(s)
self.resolve_item(var)
svar = self.make_var(Restriction, s)
avar = self.make_var(None, var)
+ prop = self.variables[svar].property
restr = self.variables[svar]
- restr.TBox['allValues'] = [('allvalue', var)]
+ restr.TBox[prop] = {'allValues' : [('allValues', var)]}
# constrain = AllValueConstraint(svar, avar)
# self.constraints.append(constrain)
def someValuesFrom(self, s, var):
+ self.resolve_item(s)
self.resolve_item(var)
svar = self.make_var(Restriction, s)
avar = self.make_var(None, var)
+ prop = self.variables[svar].property
restr = self.variables[svar]
- restr.TBox['someValues'] = [('somevalues', var)]
+ restr.TBox[prop] = {'someValues' : [('someValues', var)]}
# constrain = SomeValueConstraint(svar, avar)
# self.constraints.append(constrain)
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 Mon May 8 17:59:08 2006
@@ -255,7 +255,7 @@
py.test.raises(ConsistencyFailure, O.consistency)
def test_Transitiveproperty():
- py.test.skip("in transit")
+ #py.test.skip("in transit")
O = Ontology()
#Make functional property
sub = URIRef('subRegionOf')
@@ -275,10 +275,10 @@
O.type(sub, obj)
O.variables['subRegionOf_'].setValues([('Italy_','Tuscanny_'),('Tuscanny_','Chianti_')])
O.consistency()
- assert ('Italy_', ['Chianti_']) in O.variables['subRegionOf_'].getValues()
+ assert 'Chianti_' in O.variables['subRegionOf_']._dict['Italy_']
def test_symmetricproperty():
- py.test.skip("in transit")
+ #py.test.skip("in transit")
O = Ontology()
#Make functional property
@@ -298,7 +298,7 @@
O.type(sub, obj)
O.variables['friend_'].setValues([('Bob_','Alice_')])
O.consistency()
- assert ('Alice_', 'Bob_') in O.variables['friend_'].getValues()
+ assert ('Alice_', ['Bob_']) in O.variables['friend_'].getValues()
def test_inverseof():
py.test.skip("in transit")
@@ -505,7 +505,6 @@
def test_cardinality_terminology():
- #py.test.skip("In progress")
# Modeled after one of the standard tests (approved/maxCardinality)
# 'cls' by subclassing two maxCardinality restrictions becomes the set of
# individuals satisfying both restriction, ie having exactly 2 values of
More information about the Pypy-commit
mailing list