Как уподобить человеку одно и то же свойство данных n раз - PullRequest
0 голосов
/ 08 июля 2020

Например, у меня есть свойство данных «имя» в моей онтологии, и я хочу ассимилировать отдельному человеку более одного свойства данных «имя».

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

Я делаю это, и это не так ' t работает и создает только одно свойство данных с последним значением в списке.

Ответы [ 2 ]

0 голосов
/ 08 июля 2020

Вот полный пример того, чего (я полагаю) вы пытаетесь достичь. Я переименовал ваше 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>
0 голосов
/ 08 июля 2020

Вместо:

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

попробуйте:

individual.name = []

, а затем на каждой итерации:

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