You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OwlReady2技术问题:如何获取指定个体的数据属性?

如何用Owlready2查询指定个体的数据属性?

你当前代码的问题在于,list(onto.data_properties())获取的是整个本体中定义的所有数据属性,而非目标个体Prod1拥有的属性值。要查询指定个体的数据属性,需要针对找到的个体进行操作,而非本体对象。

原代码

import owlready2
from owlready2 import *

onto = get_ontology("Atributos_complete.owl")
onto.load()
y = "Prod1"
for x in onto.individuals():
    if x.name == y:
        print (list(onto.data_properties()))

修正后的代码方案

方案1:遍历个体的所有数据属性及对应值

找到目标个体后,遍历该个体的data_properties(),并通过getattr()获取属性值:

import owlready2
from owlready2 import *

onto = get_ontology("Atributos_complete.owl")
onto.load()
target_name = "Prod1"

for individual in onto.individuals():
    if individual.name == target_name:
        # 遍历该个体的所有数据属性
        for prop in individual.data_properties():
            # 获取属性对应的值,Owlready2中属性值以列表形式存储
            prop_values = getattr(individual, prop.python_name)
            print(f"{prop.name}: {prop_values}")

方案2:直接访问已知的属性名

如果你已经知道要查询的具体数据属性名称,可以直接通过属性名访问:

import owlready2
from owlready2 import *

onto = get_ontology("Atributos_complete.owl")
onto.load()
target_name = "Prod1"

for individual in onto.individuals():
    if individual.name == target_name:
        # 假设数据属性名为"productName",替换为你实际的属性名
        print(f"productName: {individual.productName}")
        # 多个属性依次类推
        # print(f"price: {individual.price}")

补充说明

  • Owlready2中,个体的属性值默认以列表形式返回(因为OWL允许属性有多个值)。
  • 可以通过individual.get_properties()获取该个体的所有属性(包括数据属性和对象属性),如果只想过滤数据属性,就用individual.data_properties()。

内容的提问来源于stack exchange,提问作者JGJH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:50:28