RDFLib / FuXi

Chimezie Ogbuji's FuXi reasoner. NON-FUNCTIONING, RETAINED FOR ARCHIVAL PURPOSES. For working code plus version and associated support requirements see:
http://code.google.com/p/fuxi/
51 stars 28 forks source link

FuXi example code fails #13

Open doriantaylor opened 8 years ago

doriantaylor commented 8 years ago

Tried this:

from FuXi.Horn.HornRules import HornFromN3
rs=HornFromN3('http://www.agfa.com/w3c/euler/rdfs-rules.n3')

Got this:

  File "/usr/local/lib/python2.7/dist-packages/FuXi-1.4.dev-py2.7.egg/FuXi/Rete/RuleStore.py", line 396, in add
    isinstance(obj, (URIRef, Literal)) and obj or obj.identifier))
AttributeError: 'Literal' object has no attribute 'identifier'

(Note, I tried the same with Python 3. This is against the latest rdflib.)

https://github.com/RDFLib/FuXi/blob/master/lib/Rete/RuleStore.py#L396 says:

isinstance(obj, (URIRef, Literal)) and obj or obj.identifier))

I'm not sure where obj.identifier is supposed to come from but it doesn't look like it's anywhere in the source of rdflib.

doriantaylor commented 8 years ago

Oh IIIIIIII see. Check this out:

> /usr/local/lib/python2.7/dist-packages/FuXi-1.4.dev-py2.7.egg/FuXi/Rete/RuleStore.py(396)add()
-> isinstance(obj, (URIRef, Literal)) and obj or obj.identifier))
(Pdb) p obj
rdflib.term.Literal(u'false', datatype=rdflib.term.URIRef(u'http://www.w3.org/2001/XMLSchema#boolean'))
(Pdb) if not obj: 'hi'
'hi'

Somebody set "false"^^xsd:boolean to be actually False in Python. I can patch this but I'm still not sure where .identifier is coming from. Perhaps more accurately, I'm not sure what that code is actually supposed to do.

wwaites commented 7 years ago

This appears to be fixed in the gjhiggins branch. Hopefully it will be merged in shortly. seeAlso #15