Owlready2动态类生成

时间:2018-11-20 16:41:30

标签: python-3.x owlready

我正在尝试为owlready2本体动态创建一个类。该文档建议以下代码行:

NewClass = types.new_class("NewClassName", (SuperClass,), kwds = { "namespace" : my_ontology })

在我看来,这等于

types.new_class("NewClassName", (onto["ParentClass"],), kwds={'namespace' : onto})

但是,当我运行上面的代码时,出现以下异常:

 Traceback (most recent call last):
    (onto[object.get('owl_dataProperty_parent')],), kwds={'namespace' : onto})
    File "/usr/lib/python3.6/types.py", line 62, in new_class
    return meta(name, bases, ns, **kwds)
 TypeError: __new__() got an unexpected keyword argument 'namespace

我不知道那里出了什么问题,经过数小时的调试,我仍然一无所知。 我正在使用Python 3.6.6和owlready2的0.11版本

1 个答案:

答案 0 :(得分:0)

我发现根本不需要“名称空间”属性。因此,以下工作正常:

[
  {
    "Latitude": 15.64624,
    "Longitude": 32.46113,
    "": ""
  },
  {
    "Latitude": 37.67971,
    "Longitude": -121.9076,
    "": ""
  },
  {
    "Latitude": 40.51361,
    "Longitude": -74.25005999999998,
    "": ""
  }
]

即使这不能解决整体问题,也回答了我的问题。

此外,它的接缝通常是这样做的方法,请参见owlready forum。所以也许是时候更新文档了。