Python 我如何将相同的数据属性同化给一个人n次

Python 我如何将相同的数据属性同化给一个人n次,python,database,owl,ontology,owlready,Python,Database,Owl,Ontology,Owlready,例如,我的本体中有数据属性“name”,我想将多个数据属性“name”同化到一个个体中 我这样做了,但它不起作用,只创建了一个数据属性和列表中的最后一个值。而不是: individual.name = [line['name']] 尝试: 然后,在每次迭代中: individual.name.append([line['name']) 而不是: individual.name = [line['name']] 尝试: 然后,在每次迭代中: individual.name.append([l

例如,我的本体中有数据属性“name”,我想将多个数据属性“name”同化到一个个体中

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

而不是:

individual.name = [line['name']]
尝试:

然后,在每次迭代中:

individual.name.append([line['name'])
而不是:

individual.name = [line['name']]
尝试:

然后,在每次迭代中:

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

这是一个完整的例子,我想你正在努力实现的目标。 我将您的
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>

名称1
姓名2
名字3

下面是一个完整的例子,说明了(我猜)您正在努力实现的目标。 我将您的
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>

名称1
姓名2
名字3