[X3D-Ecosystem] Blender ontology

John Carlson yottzumm at gmail.com
Thu Sep 25 07:32:37 PDT 2025


I had a brain fart and thought that AI could write a blender python api
ontology.  Here’s the first version.  Do with it what you will.

@prefix bpy: <http://blender.org/ontology/bpy#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

# Ontology Declaration
<http://blender.org/ontology/bpy> a owl:Ontology ;
dc:title "Blender Python API Ontology" ;
dc:description "An ontology describing the structure and components of the
Blender Python API (bpy)" ;
dc:creator "Generated for Blender 3D modeling software" ;
owl:versionInfo "1.0" .

# ==========================================
# CORE CLASSES
# ==========================================

# Base Blender Object
bpy:BlenderObject a owl:Class ;
rdfs:label "Blender Object" ;
rdfs:comment "Base class for all objects in Blender" .

# Scene Management
bpy:Scene a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Scene" ;
rdfs:comment "A scene in Blender containing objects, cameras, lights, etc."
.

bpy:Collection a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Collection" ;
rdfs:comment "A collection of objects in Blender for organization" .

# 3D Objects
bpy:Object a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "3D Object" ;
rdfs:comment "A 3D object in Blender scene" .

bpy:Mesh a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Mesh" ;
rdfs:comment "3D mesh data containing vertices, edges, and faces" .

bpy:Camera a owl:Class ;
rdfs:subClassOf bpy:Object ;
rdfs:label "Camera" ;
rdfs:comment "Camera object for rendering views" .

bpy:Light a owl:Class ;
rdfs:subClassOf bpy:Object ;
rdfs:label "Light" ;
rdfs:comment "Light source object" .

bpy:Curve a owl:Class ;
rdfs:subClassOf bpy:Object ;
rdfs:label "Curve" ;
rdfs:comment "Curve or surface object" .

bpy:Armature a owl:Class ;
rdfs:subClassOf bpy:Object ;
rdfs:label "Armature" ;
rdfs:comment "Bone system for animation and deformation" .

# Materials and Textures
bpy:Material a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Material" ;
rdfs:comment "Material defining surface appearance" .

bpy:Texture a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Texture" ;
rdfs:comment "Texture for materials or procedural generation" .

bpy:Image a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Image" ;
rdfs:comment "Image data for textures" .

# Animation
bpy:Action a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Action" ;
rdfs:comment "Animation action containing keyframes" .

bpy:Keyframe a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Keyframe" ;
rdfs:comment "Animation keyframe at specific time" .

# Modifiers
bpy:Modifier a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Modifier" ;
rdfs:comment "Modifier that affects object geometry or behavior" .

bpy:SubsurfModifier a owl:Class ;
rdfs:subClassOf bpy:Modifier ;
rdfs:label "Subdivision Surface Modifier" ;
rdfs:comment "Subdivision surface modifier for smoothing" .

bpy:ArrayModifier a owl:Class ;
rdfs:subClassOf bpy:Modifier ;
rdfs:label "Array Modifier" ;
rdfs:comment "Array modifier for duplicating objects" .

# Geometry Elements
bpy:Vertex a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Vertex" ;
rdfs:comment "3D point in mesh geometry" .

bpy:Edge a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Edge" ;
rdfs:comment "Line connecting two vertices" .

bpy:Face a owl:Class ;
rdfs:subClassOf bpy:BlenderObject ;
rdfs:label "Face" ;
rdfs:comment "Polygon face in mesh" .

# Context and Data
bpy:Context a owl:Class ;
rdfs:label "Context" ;
rdfs:comment "Current Blender context state" .

bpy:Data a owl:Class ;
rdfs:label "Data" ;
rdfs:comment "Blender data blocks container" .

# Operators
bpy:Operator a owl:Class ;
rdfs:label "Operator" ;
rdfs:comment "Blender operation or command" .

# ==========================================
# OBJECT PROPERTIES
# ==========================================

# Spatial Properties
bpy:hasLocation a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:string ;
rdfs:label "has location" ;
rdfs:comment "3D location coordinates (x, y, z)" .

bpy:hasRotation a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:string ;
rdfs:label "has rotation" ;
rdfs:comment "3D rotation values" .

bpy:hasScale a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:string ;
rdfs:label "has scale" ;
rdfs:comment "3D scale values" .

# Relationships
bpy:containsObject a owl:ObjectProperty ;
rdfs:domain bpy:Scene ;
rdfs:range bpy:Object ;
rdfs:label "contains object" ;
rdfs:comment "Scene contains this object" .

bpy:hasMesh a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Mesh ;
rdfs:label "has mesh" ;
rdfs:comment "Object uses this mesh data" .

bpy:hasMaterial a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Material ;
rdfs:label "has material" ;
rdfs:comment "Object has assigned material" .

bpy:hasModifier a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Modifier ;
rdfs:label "has modifier" ;
rdfs:comment "Object has applied modifier" .

bpy:hasParent a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Object ;
rdfs:label "has parent" ;
rdfs:comment "Object has parent object" .

bpy:hasChild a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Object ;
rdfs:label "has child" ;
rdfs:comment "Object has child object" ;
owl:inverseOf bpy:hasParent .

bpy:inCollection a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Collection ;
rdfs:label "in collection" ;
rdfs:comment "Object belongs to collection" .

# Mesh Relationships
bpy:hasVertex a owl:ObjectProperty ;
rdfs:domain bpy:Mesh ;
rdfs:range bpy:Vertex ;
rdfs:label "has vertex" ;
rdfs:comment "Mesh contains this vertex" .

bpy:hasEdge a owl:ObjectProperty ;
rdfs:domain bpy:Mesh ;
rdfs:range bpy:Edge ;
rdfs:label "has edge" ;
rdfs:comment "Mesh contains this edge" .

bpy:hasFace a owl:ObjectProperty ;
rdfs:domain bpy:Mesh ;
rdfs:range bpy:Face ;
rdfs:label "has face" ;
rdfs:comment "Mesh contains this face" .

bpy:connectsVertex a owl:ObjectProperty ;
rdfs:domain bpy:Edge ;
rdfs:range bpy:Vertex ;
rdfs:label "connects vertex" ;
rdfs:comment "Edge connects these vertices" .

# Material Relationships
bpy:hasTexture a owl:ObjectProperty ;
rdfs:domain bpy:Material ;
rdfs:range bpy:Texture ;
rdfs:label "has texture" ;
rdfs:comment "Material uses this texture" .

bpy:usesImage a owl:ObjectProperty ;
rdfs:domain bpy:Texture ;
rdfs:range bpy:Image ;
rdfs:label "uses image" ;
rdfs:comment "Texture uses this image" .

# Animation Relationships
bpy:hasAction a owl:ObjectProperty ;
rdfs:domain bpy:Object ;
rdfs:range bpy:Action ;
rdfs:label "has action" ;
rdfs:comment "Object has animation action" .

bpy:hasKeyframe a owl:ObjectProperty ;
rdfs:domain bpy:Action ;
rdfs:range bpy:Keyframe ;
rdfs:label "has keyframe" ;
rdfs:comment "Action contains this keyframe" .

# ==========================================
# DATA PROPERTIES
# ==========================================

# Identification
bpy:name a owl:DatatypeProperty ;
rdfs:domain bpy:BlenderObject ;
rdfs:range xsd:string ;
rdfs:label "name" ;
rdfs:comment "Object name identifier" .

bpy:type a owl:DatatypeProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:string ;
rdfs:label "type" ;
rdfs:comment "Object type (MESH, CAMERA, LIGHT, etc.)" .

# Numerical Properties
bpy:vertexCount a owl:DatatypeProperty ;
rdfs:domain bpy:Mesh ;
rdfs:range xsd:integer ;
rdfs:label "vertex count" ;
rdfs:comment "Number of vertices in mesh" .

bpy:faceCount a owl:DatatypeProperty ;
rdfs:domain bpy:Mesh ;
rdfs:range xsd:integer ;
rdfs:label "face count" ;
rdfs:comment "Number of faces in mesh" .

bpy:frame a owl:DatatypeProperty ;
rdfs:domain bpy:Keyframe ;
rdfs:range xsd:integer ;
rdfs:label "frame" ;
rdfs:comment "Frame number for keyframe" .

bpy:value a owl:DatatypeProperty ;
rdfs:domain bpy:Keyframe ;
rdfs:range xsd:float ;
rdfs:label "value" ;
rdfs:comment "Keyframe value" .

# Boolean Properties
bpy:isVisible a owl:DatatypeProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:boolean ;
rdfs:label "is visible" ;
rdfs:comment "Object visibility state" .

bpy:isSelected a owl:DatatypeProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:boolean ;
rdfs:label "is selected" ;
rdfs:comment "Object selection state" .

bpy:isActive a owl:DatatypeProperty ;
rdfs:domain bpy:Object ;
rdfs:range xsd:boolean ;
rdfs:label "is active" ;
rdfs:comment "Object is active object" .

# Camera Properties
bpy:focalLength a owl:DatatypeProperty ;
rdfs:domain bpy:Camera ;
rdfs:range xsd:float ;
rdfs:label "focal length" ;
rdfs:comment "Camera focal length in mm" .

bpy:sensorWidth a owl:DatatypeProperty ;
rdfs:domain bpy:Camera ;
rdfs:range xsd:float ;
rdfs:label "sensor width" ;
rdfs:comment "Camera sensor width in mm" .

# Light Properties
bpy:energy a owl:DatatypeProperty ;
rdfs:domain bpy:Light ;
rdfs:range xsd:float ;
rdfs:label "energy" ;
rdfs:comment "Light energy/strength" .

bpy:color a owl:DatatypeProperty ;
rdfs:domain bpy:Light ;
rdfs:range xsd:string ;
rdfs:label "color" ;
rdfs:comment "Light color (R, G, B)" .

# Material Properties
bpy:roughness a owl:DatatypeProperty ;
rdfs:domain bpy:Material ;
rdfs:range xsd:float ;
rdfs:label "roughness" ;
rdfs:comment "Material roughness value" .

bpy:metallic a owl:DatatypeProperty ;
rdfs:domain bpy:Material ;
rdfs:range xsd:float ;
rdfs:label "metallic" ;
rdfs:comment "Material metallic value" .

# ==========================================
# DEFINED INDIVIDUALS/INSTANCES
# ==========================================

# Default Scene
bpy:DefaultScene a bpy:Scene ;
bpy:name "Scene" ;
rdfs:label "Default Scene" ;
rdfs:comment "Default Blender scene" .

# Default Objects
bpy:DefaultCube a bpy:Object ;
bpy:name "Cube" ;
bpy:type "MESH" ;
bpy:isVisible true ;
rdfs:label "Default Cube" ;
rdfs:comment "Default cube object in new Blender scene" .

bpy:DefaultCamera a bpy:Camera ;
bpy:name "Camera" ;
bpy:type "CAMERA" ;
bpy:focalLength 50.0 ;
rdfs:label "Default Camera" ;
rdfs:comment "Default camera in new Blender scene" .

bpy:DefaultLight a bpy:Light ;
bpy:name "Light" ;
bpy:type "LIGHT" ;
bpy:energy 10.0 ;
rdfs:label "Default Light" ;
rdfs:comment "Default light in new Blender scene" .
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20250925/847c0f83/attachment-0001.html>


More information about the X3D-Ecosystem mailing list