Проблема с добавлением троек в rdflib.store.IOMemory - PullRequest
0 голосов
/ 15 сентября 2011

Всякий раз, когда я пытаюсь добавить тройку в магазин, используя следующий код, это выдает мне следующую ошибку. Не могли бы вы помочь мне в этом отношении. Заранее спасибо.

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

Error:

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

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Кажется, вам нужно передать как минимум 3 аргумента.В документации этого модуля вы можете увидеть, какие аргументы нужны add метод:

(abc, FOAF['knows'],def) Ваша тройка?в этом случае вам понадобятся еще два: context и quoted

add(self, triple, context, quoted) 

Я нашел дополнительную информацию здесь

add (self, (субъект, предикат, объект), контекст, заключенный в кавычки = False)

Добавляет данное утверждение в конкретный контекст или в модель.Аргумент в кавычках интерпретируется хранилищами, поддерживающими формулы, чтобы указать, что это утверждение заключено в кавычки / гипотетически. Не следует указывать контекст, если аргумент в кавычках имеет значение True.Также должно быть ошибкой, если аргумент в кавычках имеет значение True, если хранилище не поддерживает формулу.

0 голосов
/ 15 сентября 2011

Итак, во-первых, вы должны знать, что когда python говорит, что метод принимает 3 аргумента, он действительно означает два аргумента плюс аргумент экземпляра (обычно self).В настоящее время вы передаете экземпляр (store) плюс кортеж из трех элементов: (abc, FOAF['knows'], def), который считается одним аргументом.store.add() нужен третий аргумент.Вот что сообщение об ошибке пытается сказать вам.Я не знаю, для чего это нужно, но документация должна быть в состоянии объяснить дальше.

Если ничего другого, вы можете попробовать store.add((abc, FOAF['knows'], def), None) и посмотреть, не вызывает ли это новую ошибку.

...