开发者

Problem adding triples in rdflib.store.IOMemory

开发者 https://www.devze.com 2023-04-04 22:22 出处:网络
Whenever I try to add triple into the store using following code it gives me following error. Could you please help me in this regard. Thanks in advance.

Whenever I try to add triple into the store using following code it gives me following error. Could you please help me in this regard. Thanks in advance.

store = plugin.get('IOMemory',Store)()
store.add((abc, FOAF['knows'],def))

Error:

Traceback (most recent call last开发者_如何学Python):
  File "C:\Python27\internetcode.py", line 114, in <module>
  store.add((abc, FOAF['knows'],def))
TypeError: add() takes at least 3 arguments (2 given)


It seems you have to pass at least 3 arguments. In the documentation of that module you can see what arguments needs add method:

(abc, FOAF['knows'],def) is your triple? in that case you need two more: context and quoted

add(self, triple, context, quoted) 

I've found some more information here

add(self, (subject, predicate, object), context, quoted=False)

Adds the given statement to a specific context or to the model. The quoted argument is interpreted by formula-aware stores to indicate this statement is quoted/hypothetical It should be an error to not specify a context and have the quoted argument be True. It should also be an error for the quoted argument to be True when the store is not formula-aware.


So first, you need to know that when python says that a method takes 3 arguments, it really means two argument plus the instance argument (usually self). You are currently passing the instance (store) plus a three element tuple: (abc, FOAF['knows'], def), which counts as one argument. store.add() needs a third argument. That's what the error message is trying to tell you. I don't know what it needs, but the documentation should be able to explain further.

If nothing else, you can try store.add((abc, FOAF['knows'], def), None), and see if that causes a new error.

0

精彩评论

暂无评论...
验证码 换一张
取 消