【问题标题】:How do I assimilate to an individual the same data property n times我如何将相同的数据属性同化到个人 n 次
【发布时间】:2020-07-08 17:48:22
【问题描述】:

例如,我的本体中有数据属性“名称”,我想将多个数据属性“名称”同化到个人。

onto = get_ontology("teste.owl").load()
for line in list:
    individual = onto.Class('individuo1')
    individual.nome = [line['name']]

我这样做了,但它不起作用,只使用列表中的最后一个值创建一个数据属性。

【问题讨论】:

    标签: python database owl ontology owlready


    【解决方案1】:

    代替:

    individual.name = [line['name']]
    

    尝试:

    individual.name = []
    

    然后,在每次迭代中:

    individual.name.append([line['name'])
    

    【讨论】:

      【解决方案2】:

      这是一个完整的示例(我猜)您正在尝试实现的目标。 我将您的 name DataProperty 重命名为 hasName,因为 owlready2 已经使用了 'name' 属性,因此该示例不起作用。

      from owlready2 import get_ontology, DataProperty, Thing
      
      list_names = [
          {'name': 'name1'},
          {'name': 'name2'},
          {'name': 'name3'},
      ]
      onto = get_ontology("http://example.org/ns")
              
      with onto:
          # A simple model:
          class Class(Thing): pass
          class hasName(DataProperty): pass
      
          # you have to define the `hasName` property
          # when creating the individual:
          indiv = onto.Class('Indiv0', hasName=[])
          
          # you can now append to this list:
          for line in list_names:
              indiv.hasName.append(line['name'])
              
      onto.save('test.owl')
      

      这应该会产生预期的 rdf/xml 表示:

      <Class rdf:about="#Indiv0">
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NamedIndividual"/>
        <hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">name1</hasName>
        <hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">name2</hasName>
        <hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">name3</hasName>
      </Class>
      

      【讨论】:

        猜你喜欢
        • 2013-11-16
        • 1970-01-01
        • 2022-01-04
        相关资源
        最近更新 更多