[pypy-svn] r32981 - in pypy/dist/pypy/lib/pyontology: . test
ale at codespeak.net
ale at codespeak.net
Sat Oct 7 13:18:19 CEST 2006
Author: ale
Date: Sat Oct 7 13:18:18 2006
New Revision: 32981
Modified:
pypy/dist/pypy/lib/pyontology/constraint_classes.py
pypy/dist/pypy/lib/pyontology/pyontology.py
pypy/dist/pypy/lib/pyontology/sparql_grammar.py
pypy/dist/pypy/lib/pyontology/test/test_ontology.py
pypy/dist/pypy/lib/pyontology/test/test_sparql.py
Log:
Major refactoring in progress. Needed to properly query for properties
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 Sat Oct 7 13:18:18 2006
@@ -101,6 +101,25 @@
Thing_uri = URIRef(u'http://www.w3.org/2002/07/owl#Thing')
+class PropertyConstrain(AbstractConstraint):
+
+ def __init__(self, prop, variable, cls_or_restriction):
+ AbstractConstraint.__init__(self, [ prop])
+ self.object = cls_or_restriction
+ self.variable = variable
+ self.prop = prop
+
+ def narrow(self, domains):
+ # Narrow the list of properties (instances of some property type)
+ # to those who has a pair (self.variable, self.object)
+ dom = domains[self.prop]
+ vals = list(dom.getValues())
+ for p in vals:
+# objs = domains[p].getValuesPrKey(self.variable)
+ if not ((self.variable, self.object) in domains[p]):
+ dom.removeValue(p)
+
+
class MemberConstraint(AbstractConstraint):
def __init__(self, variable, cls_or_restriction):
@@ -151,7 +170,7 @@
def narrow(self, domains):
propdom = domains[self.variable]
domaindom = domains[self.object]
- for cls in propdom:
+ for cls,val in propdom.getValues():
if cls not in domaindom:
raise ConsistencyFailure("Value %r of property %r not in domain %r"%(pval, self.variable, self.object))
Modified: pypy/dist/pypy/lib/pyontology/pyontology.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/pyontology.py (original)
+++ pypy/dist/pypy/lib/pyontology/pyontology.py Sat Oct 7 13:18:18 2006
@@ -53,6 +53,13 @@
format = "n3"
return format
+""" In OWL there are Classes, Properties, Individuals and Literals.
+ Properties creates relations between Classes, Classes and Individuals, Individuals and Individuals and Literals. There are a inheritance tree of Properties. We record instances of Properies in the class variable "prop_instance".
+
+ Classes are defined as the set of Individuals belonging to the Class. We record these as the Values of the Classdomain.
+ We record the instances of a Classtype in the Class variable "cls_inst". The class instances shall "buble" up the inheritance tree.
+"""
+
class ClassDomain(AbstractDomain, object):
# Class domain is intended as a (abstract/virtual) domain for implementing
@@ -63,7 +70,7 @@
# The bases of a class is in the list "bases"
fixed = False
-
+
def __init__(self, name='', uri=None, values = [], bases = []):
AbstractDomain.__init__(self)
self.name = name
@@ -78,20 +85,12 @@
self.bases = []
self.finished = False
self.value = None
- self.type = []
def finish(self, variables, glob_constraints):
# The finish method constructs the constraints
if not self.finished:
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
- expr = []
- for typ in self.type:
- expr +=[ "%s == %s" % (self.name, typ)]
- expr = ' and '.join(expr)
- self.in_constraint.append(Expression([self.name]+self.type, expr))
+ # Try to initialise constraints for this class
prop = getattr(self, 'property')
val = getattr(self, 'value')
if prop:
@@ -101,7 +100,7 @@
if dom:
self.domains.update(dom)
self.in_constraint.extend(constraints)
- # Initialise constraints from the base classes
+ # Initialise constraints from the base classes
self.finished = True
for cls in self.bases:
cls = variables[cls]
@@ -161,7 +160,6 @@
self._bases = bases
def addValue(self, value):
-# assert isinstance(value, URIRef)
self.values[value] = True
def getValues(self):
@@ -193,6 +191,7 @@
#raise ConsistencyFailure
class Thing(ClassDomain):
+ uri = URIRef(namespaces['owl'] + "#Thing")
pass
class Individual(Thing):
@@ -223,17 +222,19 @@
cmp = __eq__
class List(ClassDomain):
+ uri = URIRef(namespaces['rdf'] + "#List")
def __init__(self, name='', values=[], bases = []):
ClassDomain.__init__(self, name, values, bases)
-class Property(Individual): #ClassDomain):
+class Property(AbstractDomain, object):
# Property contains the relationship between a class instance and a value
# - a pair. To accomodate global assertions like 'range' and 'domain' attributes
# for range and domain must be filled in by rdfs:range and rdfs:domain
-
+ uri = URIRef(namespaces['rdf'] + "#Property")
+
def __init__(self, name='', uri='', values=[], bases = []):
- Individual.__init__(self, name, uri, values, bases)
+ super(Property, self).__init__()
self.name = name
self._dict = {}
self.property = None
@@ -288,33 +289,39 @@
return False
class ObjectProperty(Property):
+ uri = URIRef(namespaces['owl'] + "#ObjectProperty")
pass
class DatatypeProperty(Property):
+ uri = URIRef(namespaces['owl'] + "#DatatypeProperty")
pass
class DataRange(ClassDomain):
pass
class AllDifferent(ClassDomain):
+ uri = URIRef(namespaces['owl'] + "#AllDifferent")
# A special class whose members are distinct
# Syntactic sugar
pass
class Nothing(ClassDomain):
-
+ uri = URIRef(namespaces['owl'] + "#Nothing")
def __init__(self, name='', values=[], bases = []):
ClassDomain.__init__(self, name, values, bases)
self.constraint = [NothingConstraint(name)]
+ self.finished = True
class FunctionalProperty(Property):
+ uri = URIRef(namespaces['owl'] + "#FunctionalProperty")
def __init__(self, name='', values=[], bases = []):
Property.__init__(self, name, values, bases)
self.constraint = [FunctionalCardinality(name)]
-class InverseFunctionalProperty(Property):
+class InverseFunctionalProperty(ObjectProperty):
+ uri = URIRef(namespaces['owl'] + "#InverseFunctionalProperty")
def __init__(self, name='', values=[], bases = []):
Property.__init__(self, name, values, bases)
@@ -329,7 +336,8 @@
raise ConsistencyFailure("Only unique values in InverseFunctionalProperties")
res = res | vals
-class TransitiveProperty(Property):
+class TransitiveProperty(ObjectProperty):
+ uri = URIRef(namespaces['owl'] + "#TransitiveProperty")
def __init__(self, name='', values=[], bases = []):
Property.__init__(self, name, values, bases)
@@ -344,7 +352,8 @@
if key in self._dict[k]:
Property.addValue(self, k, val)
-class SymmetricProperty(Property):
+class SymmetricProperty(ObjectProperty):
+ uri = URIRef(namespaces['owl'] + "#SymmetricProperty")
def __init__(self, name='', values=[], bases = []):
Property.__init__(self, name, values, bases)
@@ -365,13 +374,13 @@
3. The class in which context the restriction should be applied. This comes from subClassOf, type...
The class is saved in the restrictions cls attribute
"""
+ uri = URIRef(namespaces['owl'] + "#Restriction")
def __init__(self, name='', values=[], bases = []):
ClassDomain.__init__(self, name, values, bases)
self.property = None
def Types(typ):
class Type(ClassDomain):
-
def __contains__(self, item):
#assert isinstance(item, Literal)
return item.datatype is None or item.datatype == self.Type
@@ -400,6 +409,7 @@
getUriref('owl', 'SymmetricProperty') : SymmetricProperty,
getUriref('owl', 'TransitiveProperty') : TransitiveProperty,
getUriref('rdf', 'List') : List,
+# getUriref('rdf', 'type') : Property,
}
XMLTypes = ['string', 'float', 'integer', 'date']
@@ -422,7 +432,12 @@
self.var2ns ={}
self.nr_of_triples = 0
self.time = time.time()
-
+ for pr in builtin_voc:
+ name = self.make_var(ClassDomain, pr)
+ # Instantiate ClassDomains to record instances of the types
+ name = name + "_type"
+ self.variables[name] = ClassDomain(name, pr)
+
def add(self, triple):
self.graph.add(triple)
@@ -471,26 +486,27 @@
triples = where.GroupGraphPattern[0].Triples
new = []
+
for trip in triples:
case = 1
inc = 0
newtrip = []
- trip = list(trip)
- for item in trip:
- if isinstance(item, Literal):
- newtrip.append(item)
- elif item.NCNAME_PREFIX:
- uri = prefixes[item.NCNAME_PREFIX[0]] + item.NCNAME[0]
+ trip_ = [trip.Subject[0], trip.Verb[0], trip.Object[0]]
+ for item in trip_:
+ if isinstance(item[0], Literal):
+ newtrip.append(item[0])
+ elif item[0].NCNAME_PREFIX:
+ uri = prefixes[item[0].NCNAME_PREFIX[0]] + item[0].NCNAME[0]
newtrip.append(URIRef(uri))
- elif item.getName() == 'VAR1':
- newtrip.append(URIRef('query_'+item[0]))
- case += trip.index(item) + inc
+ elif item.VAR1:
+ newtrip.append(URIRef('query_'+item.VAR1[0][0]))
+ case += trip_.index(item) + inc
if inc:
inc = 1
else:
inc = 2
else:
- newtrip.append(item[0])
+ newtrip.append(item[0][0])
newtrip.append(case)
new.append(newtrip)
constrain = where.GroupGraphPattern[0].Constraint
@@ -524,13 +540,27 @@
self.hasValue(var, trip[2])
elif case == 2:
# for all p's return p if p[0]==s and p[1]==o
- prop = self.make_var(Property, URIRef(trip[1]))
- self.type(URIRef(trip[1]), namespaces['owl']+'Property')
+ prop_name = self.make_var(ClassDomain, URIRef(trip[1]))
+ indi_name = self.mangle_name(trip[0])
+ indi = Individual(indi_name, trip[0])
+ obj_name = self.mangle_name(trip[2])
+ if obj_name in self.variables:
+ obj = self.variables[self.mangle_name(trip[2])]
+ else:
+ obj = trip[2]
+ self.type(URIRef(trip[1]), URIRef(namespaces['rdf']+'#Property'))
+ prop = self.variables[prop_name]
+
+ prop.setValues(list(self.variables['rdf_Property_type'].getValues()))
+ # Get all properties by looking at 'rdf_Property_type'
+ # add a constraint trip[0] in domains[prop] and trip[2] in domains[prop].getValuesPrKey(trip[0])
+ self.constraints.append(PropertyConstrain(prop_name, indi, obj))
+
elif case == 3:
# search for s in p
prop = self.make_var(None, trip[1])
- p_vals = self.variables[prop].getValuesPrKey(self.make_var(trip[0]))
- p_vals = p_vals[0][1]
+ indi = self.variables[self.make_var(Individual, trip[0])]
+ p_vals = self.variables[prop].getValuesPrKey(indi)
var = self.make_var(Thing, trip[2])
self.variables[var].setValues((p_vals))
elif case == 4:
@@ -573,19 +603,19 @@
#predicate is one of builtin OWL or rdf predicates
pred = getattr(self, func)
res = pred(s, o)
- avar = self.make_var(ClassDomain, s)
+ #avar = self.make_var(ClassDomain, s)
+ #else:
+ avar = self.make_var(Property, p)
+ # Set the values of the property p to o
+ self.type(s, Thing_uri)
+ sub = self.make_var(Thing, s)
+ if type(o) == URIRef:
+ obj = self.make_var(Thing, o)
+ val = Individual(obj,o)
else:
- avar = self.make_var(Property, p)
- # Set the values of the property p to o
- self.type(s, Thing_uri)
- sub = self.make_var(Thing, s)
- if type(o) == URIRef:
- obj = self.make_var(Thing, o)
- val = Individual(obj,o)
- else:
- val = o
- propdom = self.variables[avar]
- res = propdom.addValue(Individual(sub,s), val)
+ val = o
+ propdom = self.variables[avar]
+ res = propdom.addValue(Individual(sub,s), val)
def resolve_item(self, item):
item_as_subject = self.graph.triples((item, None, None))
@@ -602,10 +632,8 @@
for triple in item_as_object:
self.consider_triple(triple)
- def make_var(self, cls=fd, a=''):
- log("make_var %r,%r" %(cls,a))
- if a in builtin_voc:
- cls = builtin_voc[a]
+ def mangle_name(self, a):
+
if type(a) == URIRef:
if a.find('#') != -1:
ns,name = a.split('#')
@@ -619,7 +647,14 @@
elif type(a) == BNode:
var = str(a)
else:
- return a
+ var = a
+ return var
+
+ def make_var(self, cls=fd, a=''):
+ log("make_var %r,%r" %(cls,a))
+ if a in builtin_voc:
+ cls = builtin_voc[a]
+ var = self.mangle_name(a)
if not cls:
return var
if not var in self.variables:
@@ -687,14 +722,19 @@
# var is not one of the builtin classes -> it is a Thing
self.type(s, Thing_uri)
svar = self.make_var(Individual, s)
- self.variables[svar].type.append(avar)
+# self.variables[svar].type.append(avar)
self.constraints.append(MemberConstraint(svar, avar))
else:
# var is a builtin class
cls = builtin_voc[var]
+ svar = self.make_var(cls, s)
+ for parent in cls.__mro__:
+ if not hasattr(parent, 'uri'):
+ break
+ typ_name = self.mangle_name(parent.uri) + "_type"
+ self.variables[typ_name].addValue(svar)
if cls == List:
return
- svar = self.make_var(cls, s)
cls = self.variables[svar]
if cls.constraint:
self.constraints.extend(cls.constraint)
Modified: pypy/dist/pypy/lib/pyontology/sparql_grammar.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/sparql_grammar.py (original)
+++ pypy/dist/pypy/lib/pyontology/sparql_grammar.py Sat Oct 7 13:18:18 2006
@@ -146,6 +146,7 @@
PropertyListNotEmpty = production('PropertyListNotEmpty')
ObjectList = production('ObjectList')
Verb = production('Verb')
+ Subject= production('Subject')
Object = production('Object')
TriplesNode = production('TriplesNode')
BlankNodePropertyList = production('BlankNodePropertyList')
@@ -319,9 +320,10 @@
Triples << Triples1 + Optional(dot.suppress() + Triples)
+ Subject << Group(VarOrTerm)
# Triples1 ::= VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList
- Triples1 << Group(VarOrTerm + PropertyListNotEmpty | TriplesNode + PropertyList).setResultsName('Triple', True)
+ Triples1 << Group(Subject + PropertyListNotEmpty | TriplesNode + PropertyList).setResultsName('Triple', True)
# PropertyList ::= PropertyListNotEmpty?
@@ -329,7 +331,7 @@
# PropertyListNotEmpty ::= Verb ObjectList ( ';' PropertyList )?
- PropertyListNotEmpty << Verb + ObjectList + Optional(semi + PropertyList)
+ PropertyListNotEmpty << (Verb + ObjectList + Optional(semi + PropertyList))
# ObjectList ::= Object ( ',' ObjectList )?
@@ -337,11 +339,11 @@
# Verb ::= VarOrBlankNodeOrIRIref | 'a'
- Verb << VarOrBlankNodeOrIRIref | _a
+ Verb << Group(VarOrBlankNodeOrIRIref | _a)
# Object ::= VarOrTerm | TriplesNode
- Object << (VarOrTerm | TriplesNode)
+ Object << Group(VarOrTerm | TriplesNode)
# TriplesNode ::= Collection | BlankNodePropertyList
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 Sat Oct 7 13:18:18 2006
@@ -32,7 +32,7 @@
O = Ontology()
a = URIRef(u'A')
p = URIRef(u'P')
- prop = URIRef(namespaces['owl']+'#Property')
+ prop = URIRef(namespaces['rdf']+'#Property')
xml_string_uri = URIRef(namespaces['xmlschema']+"#string")
O.type(p, prop)
O.consider_triple((a, p, Literal("ddd", datatype=xml_string_uri)))
@@ -43,7 +43,7 @@
O = Ontology()
a = URIRef(u'A')
p = URIRef(u'P')
- prop = URIRef(namespaces['owl']+'#Property')
+ prop = URIRef(namespaces['rdf']+'#Property')
xml_string_uri = URIRef(namespaces['xmlschema']+"#string")
xml_int_uri= URIRef(namespaces['xmlschema']+"#integer")
O.type(p, prop)
@@ -70,8 +70,8 @@
obj = URIRef(namespaces['owl']+'#Class')
O.type(a,obj)
O.consistency()
-# assert len(O.variables) == 4
- assert 'A_' in O.variables['C_'].bases
+ O.subClassOf(c, a)
+ O.consistency()
def test_addvalue():
O = Ontology()
@@ -163,7 +163,7 @@
pred = URIRef('type')
obj = URIRef(namespaces['owl']+'#ObjectProperty')
O.type(sub, obj)
- assert len(O.constraints) == 1
+ #assert len(O.constraints) == 1
O.constraints[0].narrow(O.variables)
def test_merge():
@@ -179,7 +179,7 @@
pred = URIRef('type')
obj = URIRef(namespaces['owl']+'#ObjectProperty')
O.type(sub, obj)
- assert len(O.constraints) == 2
+ #assert len(O.constraints) == 2
O.consistency()
def test_domain():
@@ -192,7 +192,7 @@
pred = URIRef('type')
obj = URIRef(namespaces['owl']+'#ObjectProperty')
O.type(sub, obj)
- assert len(O.constraints) == 1
+ #assert len(O.constraints) == 1
O.constraints[0].narrow(O.variables)
def test_domain_merge():
@@ -207,7 +207,7 @@
obj = URIRef(namespaces['owl']+'#ObjectProperty')
O.type(sub, obj)
- assert len(O.constraints) == 2
+ #assert len(O.constraints) == 2
for con in O.constraints:
con.narrow(O.variables)
assert O.variables['a_'].size() == 0
@@ -503,7 +503,7 @@
O.type(own1, UR(namespaces['owl']+'#Thing'))
O.type(own2, UR(namespaces['owl']+'#Thing'))
O.consistency()
- assert len(O.rep._constraints) == 4
+ #assert len(O.rep._constraints) == 4
def test_differentfromconsistency():
O = Ontology()
@@ -551,22 +551,22 @@
# predicate p
cls = URIRef('cls')
O = Ontology()
- O.add((cls, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Class')))
+ O.add((cls, UR(namespaces['rdf']+'#type'), UR(namespaces['owl']+'#Class')))
p = O.make_var(Property,URIRef('p'))
p = URIRef('p')
- O.add((p, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#ObjectProperty')))
+ O.add((p, UR(namespaces['rdf']+'#type'), UR(namespaces['owl']+'#ObjectProperty')))
restr = BNode('anon')
- O.add((restr, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Restriction') ))
- O.add((restr, UR(namespaces['rdfs']+'#onProperty'), p ))
+ O.add((restr, UR(namespaces['rdf']+'#type'), UR(namespaces['owl']+'#Restriction') ))
+ O.add((restr, UR(namespaces['owl']+'#onProperty'), p ))
O.add((cls, UR(namespaces['rdfs']+'#subClassOf'),restr ))
- O.add((restr, UR(namespaces['rdfs']+'#maxCardinality'), 2 ))
+ O.add((restr, UR(namespaces['owl']+'#maxCardinality'), 2 ))
restr2 = BNode('anon2')
- O.add((restr2, UR(namespaces['rdfs']+'#type'), UR(namespaces['owl']+'#Restriction') ))
- O.add((restr2, UR(namespaces['rdfs']+'#onProperty'), p ))
+ O.add((restr2, UR(namespaces['rdf']+'#type'), UR(namespaces['owl']+'#Restriction') ))
+ O.add((restr2, UR(namespaces['owl']+'#onProperty'), p ))
O.add((cls, UR(namespaces['rdfs']+'#subClassOf'),restr2 ))
- O.add((restr2, UR(namespaces['rdfs']+'#minCardinality'), 3 ))
+ O.add((restr2, UR(namespaces['owl']+'#minCardinality'), 3 ))
O.attach_fd()
for var in O.variables.values():
var.finish(O.variables, O.constraints)
@@ -705,3 +705,13 @@
second = URIRef('second')
O.type(first, URIRef(namespaces['owl']+'#Thing'))
assert isinstance(list(O.variables['owl_Thing'].getValues())[0], Individual)
+
+def test_recording_of_properties():
+ O = Ontology()
+ first = URIRef('first')
+ second = URIRef('second')
+# O.type(first, URIRef(namespaces['owl']+'#SymmetricProperty'))
+ O.consider_triple((first, URIRef(namespaces['rdf']+'#type'), URIRef(namespaces['owl']+'#SymmetricProperty')))
+ assert isinstance(O.variables['first_'], SymmetricProperty)
+ assert 'first_' in O.variables['rdf_Property_type'].getValues()
+
Modified: pypy/dist/pypy/lib/pyontology/test/test_sparql.py
==============================================================================
--- pypy/dist/pypy/lib/pyontology/test/test_sparql.py (original)
+++ pypy/dist/pypy/lib/pyontology/test/test_sparql.py Sat Oct 7 13:18:18 2006
@@ -28,14 +28,14 @@
assert len(where) == 1
triples = where.GroupGraphPattern[0].Triples
assert len(triples) == 2
- assert triples[0][0].getName() == 'VAR1'
- assert triples[1][0].getName() == 'VAR1'
- assert triples[1][0][0][0] == 'x'
- assert triples[0][0][0][0] == 'y'
- assert triples[1][1].asList() == ['ns', 'p']
- assert triples[0][1].asList() == ['ns', 'q']
- assert triples[1][2] == '123'
- assert type(triples[1][2]) == rdflib.Literal
+# assert triples[0][0].getName() == 'VAR1'
+# assert triples[1][0].getName() == 'VAR1'
+ assert triples[1][0].VAR1[0][0] == 'x'
+ assert triples[0][0].VAR1[0][0] == 'y'
+ assert triples[1][1][0].asList() == ['ns', 'p']
+ assert triples[0][1][0].asList() == ['ns', 'q']
+ assert triples[1][2][0] == '123'
+ assert type(triples[1][2][0]) == rdflib.Literal
vars = query.SelectQuery[0].VAR1
assert len(vars) == 2
assert 'x' in vars[0][0]
@@ -69,17 +69,19 @@
Onto = """<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
- xmlns:ns="http://example.org/ns#" >
+ xmlns:ns="http://example.org/ns#"
+ xmlns:base="http://example.org/ns#">
<owl:Class rdf:about="http://www.w3.org/2002/07/owl#Thing">
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#s"/>
</owl:oneOf>
</owl:Class>
- <owl:Thing rdf:ID="sub">
+ <owl:Thing rdf:about="http://example.org/ns#sub">
<ns:p rdf:datatype=
"http://www.w3.org/2001/XMLSchema#int">123</ns:p>
</owl:Thing>
+ <owl:ObjectProperty rdf:about="http://example.org/ns#p" />
</rdf:RDF>
"""
@@ -109,11 +111,10 @@
O.add_file(StringIO(Onto))
O.attach_fd()
O.sparql(query)
- assert list(O.variables['query_x_'].getValues())[0].uri == u'#sub'
+ assert list(O.variables['query_x_'].getValues())[0].uri == u'http://example.org/ns#sub'
def test_case_2():
"for all p's return p if p[0]==s and p[1]==o """
- py.test.skip("Doesn't work yet")
query = qt_proto % ('?x', 'ns:sub ?x 123 .')
O = Ontology()
@@ -121,11 +122,10 @@
O.attach_fd()
O.sparql(query)
- assert list(O.variables['query_x_'].getValues())[0] == 'ns:sub'
+ assert list(O.variables['query_x_'].getValues())[0] == 'ns_p'
def test_case_3():
"""search for s in p"""
-# py.test.skip("Doesn't work yet")
query = qt_proto % ('?x', 'ns:sub ns:p ?x .')
O = Ontology()
@@ -146,11 +146,10 @@
O.attach_fd()
O.sparql(query)
- assert list(O.variables['query_x_'].getValues())[0].uri == u'#sub'
+ assert list(O.variables['query_x_'].getValues())[0].uri == u'http://example.org/ns#sub'
def test_case_5():
""" for all p's return p[0] if p[1]==o """
- #py.test.skip("Doesn't work yet")
query = qt_proto % ('?x ?y', '?x ns:p ?y .')
O = Ontology()
@@ -158,7 +157,7 @@
O.attach_fd()
O.sparql(query)
- assert list(O.variables['query_x_'].getValues())[0].uri == u'#sub'
+ assert list(O.variables['query_x_'].getValues())[0].uri == u'http://example.org/ns#sub'
assert list(O.variables['query_y_'].getValues())[0] == u'123'
def test_case_6():
@@ -171,7 +170,7 @@
O.attach_fd()
O.sparql(query)
- assert list(O.variables['query_x_'].getValues())[0].uri == u'#sub'
+ assert list(O.variables['query_x_'].getValues())[0].uri == u'http://example.org/ns#sub'
def test_case_7():
""" for all p's return p[1] if p[0]==s """
@@ -183,7 +182,7 @@
O.attach_fd()
O.sparql(query)
- assert list(O.variables['query_x_'].getValues())[0].uri == u'#sub'
+ assert list(O.variables['query_x_'].getValues())[0].uri == u'http://example.org/ns#sub'
More information about the Pypy-commit
mailing list