Protègè Desktop Tutorial

Complete guide to using Protègè Desktop for ontology development

Protègè Desktop is the most comprehensive ontology editor available, offering advanced features for complex ontology modeling, reasoning, and validation.

This tutorial builds upon established agricultural ontologies, particularly the Plant-Pathogen Interactions Ontology (PPIO), to create production-ready plant disease diagnosis systems.

Installation

Download and Install

  1. Download: Visit https://protege.stanford.edu/ and download the latest version
  2. System Requirements: Java 11+ required
  3. Platform-specific installation:
# Linux (Ubuntu/Debian)
sudo apt-get install protege

# macOS via Homebrew
brew install --cask protege

# Windows: Download .exe installer from website

# Fedora / Red Hat / Rocky Linux
wget -qO- https://github.com/protegeproject/protege-distribution/releases/download/protege-5.6.8/Protege-5.6.8-linux.tar.gz | tar -xzvf - -C /opt
ln -s /opt/Protege-5.6.8/bin/protege /usr/local/bin/protege

Verify Installation

Launch Protègè and verify it opens correctly:

# Linux/macOS
protege

# Or find it in your applications menu

Getting Started

1. Create Your First Ontology

  1. File → New: Create a new ontology
  2. Set Ontology IRI: Use a unique identifier like https://ontologies.mn-ai.guru/first-ontology
  3. Save: Choose OWL format (recommended)

2. Interface Overview

Main Tabs:

  • Active Ontology: Basic ontology information
  • Entities: Browse classes, object properties, data properties, individuals
  • Classes: Class hierarchy and definition
  • Object Properties: Relationships between individuals
  • Data Properties: Attributes with literal values
  • Individuals: Instances of classes
  • SWRL: Semantic Web Rule Language rules

Building Your Plant Disease Diagnosis Ontology

This complete example demonstrates building a production-ready plant disease diagnosis system based on frameworks:

  • Plant-Pathogen Interactions Ontology (PPIO)
  • CropPest Ontology v2
  • Plant Ontology (PO)
  • AGROVOC
Note

Ontology References:

  • PPIO: Models host-pathogen relationships and resistance mechanisms
  • CropPest v2: Comprehensive crop-pest management including insects, diseases, and integrated pest management (IPM)
  • Plant Ontology (PO): Standardized plant anatomy and development stages from OBO Foundry - provides precise anatomical terms for symptom localization
  • AGROVOC: FAO’s multilingual agricultural thesaurus - provides standardized wheat disease terminology and agricultural vocabulary in 20+ languages

Step 1: Create the Complete Class Hierarchy

  1. Navigate to Classes tab
  2. Right-click on Thing (root class)
  3. Select Add subclass
  4. Build this PPIO-inspired plant disease diagnosis structure:
# Plant Disease Diagnosis Ontology (PPIO + CropPest + Plant Ontology + AGROVOC Framework)
Thing
├── BiologicalEntity
│   ├── Plant
│   │   ├── HostPlant                    # PPIO: Plants susceptible to specific pathogens
│   │   │   ├── TomatoHost               # Host for Solanaceae pathogens
│   │   │   ├── PotatoHost               # Host for late blight, etc.
│   │   │   ├── BeanHost                 # Host for bacterial pathogens
│   │   │   ├── CucumberHost             # Host for viral pathogens
│   │   │   └── WheatHost                # AGROVOC: Host for cereal diseases
│   │   │       ├── WinterWheatHost      # AGROVOC: Cold-adapted wheat varieties
│   │   │       ├── SpringWheatHost      # AGROVOC: Warm-season wheat varieties
│   │   │       ├── DurumWheatHost       # AGROVOC: Triticum durum host
│   │   │       └── CommonWheatHost      # AGROVOC: Triticum aestivum host
│   │   ├── NonHostPlant                 # PPIO: Plants naturally resistant
│   │   │   ├── NaturallyResistantTomato
│   │   │   ├── ResistantPotato
│   │   │   └── ResistantWheat
│   │   └── ResistantPlant               # PPIO: Plants with acquired resistance
│   │       ├── GeneticallyModifiedPlant
│   │       ├── HybridResistantPlant
│   │       └── TreatedResistantPlant
│   └── PlantPathogen                    # PPIO: Disease-causing organisms
│       ├── Fungus
│       │   ├── AlternariaSolani         # PPIO: Causes early blight in tomatoes
│       │   ├── PhytophthoraInfestans    # PPIO: Causes late blight
│       │   └── FusariumOxysporum        # PPIO: Causes wilting diseases
│       ├── Bacteria
│       │   ├── PseudomonasSyringae      # PPIO reference: Model organism
│       │   │   ├── PseudomonasPhaseolicola # PPIO: Bean pathogen
│       │   │   ├── PseudomonasTomato     # PPIO: Tomato pathogen
│       │   │   └── PseudomonasTabaci     # PPIO: Tobacco pathogen
│       │   └── XanthomonasCampestris
│       ├── Virus
│       │   ├── TomatoMosaicVirus
│       │   └── CucumberMosaicVirus
│       └── Pest                             # CropPest: Broader pest category
│           ├── InsectPest                   # CropPest: Insect-based crop damage
│           │   ├── Aphid
│           │   │   ├── GreenPeachAphid      # CropPest: Myzus persicae
│           │   │   └── CornLeafAphid        # CropPest: Rhopalosiphum maidis
│           │   ├── Caterpillar
│           │   │   ├── CornBorer            # CropPest: Ostrinia nubilalis
│           │   │   └── TomatoHornworm       # CropPest: Manduca quinquemaculata
│           │   ├── Beetle
│           │   │   ├── ColoradoPotatoBeetle # CropPest: Leptinotarsa decemlineata
│           │   │   └── CornRootworm         # CropPest: Diabrotica species
│           │   └── Thrips
│           │       ├── WesternFlowerThrips  # CropPest: Frankliniella occidentalis
│           │       └── TobaccoThrips        # CropPest: Frankliniella fusca
│           ├── Mite                         # CropPest: Arachnid pests
│           │   ├── SpiderMite
│           │   │   ├── TwoSpottedSpiderMite # CropPest: Tetranychus urticae
│           │   │   └── CarminSpiderMite     # CropPest: Tetranychus cinnabarinus
│           │   └── RustMite                 # CropPest: Eriophyid mites
│           ├── Nematode                     # CropPest: Plant-parasitic nematodes
│           │   ├── RootKnotNematode         # CropPest: Meloidogyne species
│           │   ├── CystNematode             # CropPest: Heterodera/Globodera species
│           │   └── LesionNematode           # CropPest: Pratylenchus species
│           └── Mollusk                      # CropPest: Slugs and snails
│               ├── GardenSlug               # CropPest: Arion hortensis
│               └── GrayFieldSlug            # CropPest: Deroceras reticulatum
├── Disease
│   ├── FungalDisease
│   │   ├── EarlyBlight                  # PPIO: Alternaria solani disease
│   │   ├── LateBlight                   # PPIO: Phytophthora infestans disease
│   │   ├── Fusarium_Wilt
│   │   ├── Powdery_Mildew
│   │   └── WheatFungalDisease           # AGROVOC: Wheat-specific fungal diseases
│   │       ├── WheatRust                # AGROVOC: Major wheat fungal disease
│   │       │   ├── StemRust              # AGROVOC: Puccinia graminis
│   │       │   ├── LeafRust              # AGROVOC: Puccinia triticina
│   │       │   └── StripeRust            # AGROVOC: Puccinia striiformis
│   │       ├── WheatSmut                # AGROVOC: Wheat smut diseases
│   │       │   ├── CommonBunt            # AGROVOC: Tilletia tritici
│   │       │   ├── DwarfBunt             # AGROVOC: Tilletia controversa
│   │       │   └── LooseSmut             # AGROVOC: Ustilago tritici
│   │       ├── FusariumHeadBlight       # AGROVOC: Fusarium graminearum
│   │       ├── SeptoriaLeafBlotch       # AGROVOC: Septoria tritici
│   │       ├── TanSpot                  # AGROVOC: Pyrenophora tritici-repentis
│   │       └── EyeSpot                  # AGROVOC: Pseudocercosporella herpotrichoides
│   ├── BacterialDisease
│   │   ├── BacterialSpeck               # PPIO: Pseudomonas syringae disease
│   │   ├── BacterialCanker
│   │   ├── SoftRot
│   │   └── WheatBacterialDisease        # AGROVOC: Wheat bacterial diseases
│   │       ├── BacterialLeafBlight      # AGROVOC: Xanthomonas campestris
│   │       └── BasalGlumeBlight         # AGROVOC: Pseudomonas syringae pv. atrofaciens
│   ├── ViralDisease
│   │   ├── MosaicVirus
│   │   ├── YellowStunt
│   │   ├── LeafCurl
│   │   └── WheatViralDisease            # AGROVOC: Wheat viral diseases  
│   │       ├── WheatStreakMosaicVirus   # AGROVOC: Triticum mosaic virus
│   │       ├── BarleyYellowDwarfVirus   # AGROVOC: Affects wheat and barley
│   │       └── WheatSoilborneMosaicVirus # AGROVOC: Soil-transmitted virus
│   ├── NutritionalDisorder
│   │   ├── NitrogenDeficiency
│   │   ├── PhosphorusDeficiency
│   │   ├── PotassiumDeficiency
│   │   └── WheatNutritionalDisorder     # AGROVOC: Cereal nutritional issues
│   │       ├── IronChlorosis             # AGROVOC: Iron deficiency in cereals
│   │       ├── ZincDeficiency            # AGROVOC: Common in wheat
│   │       └── ManganeseDeficiency       # AGROVOC: Micronutrient disorder
│   └── AbioticStress                    # AGROVOC: Non-pathogenic stress
│       ├── DroughtStress                # AGROVOC: Water deficit stress
│       ├── HeatStress                   # AGROVOC: Temperature stress
│       ├── FrostDamage                  # AGROVOC: Cold temperature damage
│       └── SalinityStress               # AGROVOC: Salt stress in soils
├── Phenotype                            # PPIO: Observable characteristics
│   ├── DiseaseSymptom                   # PPIO: Disease manifestations
│   │   ├── NecroticLesions              # PPIO: Cell death symptoms
│   │   ├── ChloroticHalo                # PPIO: Yellowing around lesions
│   │   ├── WatersonakedLesions          # PPIO: Wet appearance
│   │   └── SystemicNecrosis             # PPIO: Whole plant death
│   ├── ResistanceResponse               # PPIO: Plant defense mechanisms
│   │   ├── HypersensitiveResponse       # PPIO: Localized cell death
│   │   ├── SystemicAcquiredResistance   # PPIO: Whole-plant immunity
│   │   └── PathogenesisRelatedProteins  # PPIO: Defense proteins
│   └── VisualSymptom                    # Observable disease signs
│       ├── LeafSymptom
│       │   ├── LeafSpots
│       │   ├── LeafYellowing
│       │   ├── LeafWilting
│       │   └── LeafCurling
│       ├── StemSymptom
│       │   ├── StemCankers
│       │   ├── StemRot
│       │   └── StuntedGrowth
│       └── FruitSymptom
│           ├── FruitRot
│           ├── FruitSpots
│           └── PrematureRipening
├── Treatment
│   ├── ChemicalTreatment
│   │   ├── Fungicide
│   │   │   ├── CopperSulfate
│   │   │   ├── Chlorothalonil
│   │   │   └── Mancozeb
│   │   ├── Bactericide
│   │   │   ├── StreptomycinSulfate
│   │   │   └── CopperOxychloride
│   │   └── Insecticide
│   │       ├── Neem_Oil
│   │       └── PyrethrumExtract
│   ├── BiologicalTreatment
│   │   ├── BeneficialBacteria
│   │   ├── BeneficialFungi
│   │   └── PredatorInsects
│   ├── CulturalTreatment
│   │   ├── CropRotation
│   │   ├── Pruning
│   │   ├── ImprovedDrainage
│   │   └── SanitationPractices
│   └── IPMStrategy                         # CropPest: Integrated Pest Management
│       ├── BiologicalControl               # CropPest: Natural enemy-based control
│       │   ├── PredatorRelease             # CropPest: Beneficial insects
│       │   │   ├── LadybeetleRelease       # CropPest: Aphid predators
│       │   │   ├── LacewingRelease         # CropPest: Soft-bodied pest control
│       │   │   └── PredatoryMiteRelease    # CropPest: Spider mite control
│       │   ├── ParasitoidRelease           # CropPest: Parasitic insects
│       │   │   ├── TrichogrammaWasp        # CropPest: Lepidoptera egg parasitoid
│       │   │   ├── AphidiusWasp            # CropPest: Aphid parasitoid
│       │   │   └── EncarsiaMite            # CropPest: Whitefly parasitoid
│       │   └── MicrobialControl            # CropPest: Pathogen-based control
│       │       ├── BacillusThuringiensis   # CropPest: Bt for caterpillars
│       │       ├── BeauveriaBassiana       # CropPest: Entomopathogenic fungus
│       │       └── NuclearPolyhedrosisVirus # CropPest: NPV for specific pests
│       ├── CulturalControl                 # CropPest: Agronomic practices
│       │   ├── CompanionPlanting           # CropPest: Beneficial plant associations
│       │   ├── TrapCropping                # CropPest: Sacrificial crops
│       │   ├── SoilSolarization            # CropPest: Soil-borne pest control
│       │   └── FieldSanitation             # CropPest: Residue management
│       ├── PhysicalControl                 # CropPest: Mechanical methods
│       │   ├── RowCovers                   # CropPest: Physical barriers
│       │   ├── StickytTraps                # CropPest: Monitoring and control
│       │   ├── PheromoneTraps              # CropPest: Insect behavior modification
│       │   └── SoilCultivation             # CropPest: Mechanical soil disruption
│       └── ChemicalControl                 # CropPest: Selective pesticide use
│           ├── SelectiveInsecticide        # CropPest: Target-specific chemicals
│           ├── SystemicPesticide           # CropPest: Plant-absorbed chemicals
│           ├── ContactPesticide            # CropPest: Surface-acting chemicals
│           └── PestResistanceManagement    # CropPest: Resistance prevention
├── EnvironmentalFactor
│   ├── ClimateCondition
│   │   ├── Temperature
│   │   ├── Humidity
│   │   ├── Rainfall
│   │   └── WindSpeed
│   ├── SoilCondition
│   │   ├── SoilPH
│   │   ├── SoilMoisture
│   │   ├── SoilNutrients
│   │   └── SoilType
│   └── SeasonalFactor
│       ├── Spring
│       ├── Summer
│       ├── Autumn
│       └── Winter
└── PlantAnatomicalEntity                    # PO: Plant Ontology anatomical structures
    ├── WholePlant                           # PO:0000003 - Entire plant organism
    ├── PlantAxis                            # PO: Main plant body structures
    │   ├── Root                             # PO:0009005 - Below-ground plant axis
    │   │   ├── PrimaryRoot                  # PO: Main taproot system
    │   │   ├── LateralRoot                  # PO: Secondary root branches
    │   │   ├── RootHair                     # PO: Root epidermal extensions
    │   │   └── RootCap                      # PO: Root tip protection
    │   ├── Shoot                            # PO: Above-ground plant axis
    │   │   ├── Stem                         # PO:0009047 - Main supporting structure
    │   │   │   ├── Internode                # PO: Stem segments between nodes
    │   │   │   ├── Node                     # PO: Leaf attachment points
    │   │   │   ├── StemCortex               # PO: Outer stem tissue
    │   │   │   └── Pith                     # PO: Central stem tissue
    │   │   └── Branch                       # PO: Lateral stem extensions
    │   └── Leaf                             # PO:0009025 - Photosynthetic organs
    │       ├── LeafBlade                    # PO: Expanded leaf portion
    │       │   ├── LeafLamina               # PO: Flat leaf surface
    │       │   ├── LeafVein                 # PO: Vascular tissue in leaves
    │       │   ├── LeafMargin               # PO: Leaf edge
    │       │   └── LeafApex                 # PO: Leaf tip
    │       ├── Petiole                      # PO: Leaf stalk
    │       ├── LeafSheath                   # PO: Leaf base wrapping stem
    │       └── Stipule                      # PO: Small leaf-like appendages
    ├── ReproductiveStructure                # PO: Sexual reproduction organs
    │   ├── Flower                           # PO: Complete flower structure
    │   │   ├── Sepal                        # PO: Outer flower parts
    │   │   ├── Petal                        # PO: Colored flower parts
    │   │   ├── Stamen                       # PO: Male reproductive organs
    │   │   │   ├── Anther                   # PO: Pollen-producing structure
    │   │   │   └── Filament                 # PO: Stalk supporting anther
    │   │   └── Pistil                       # PO: Female reproductive organs
    │   │       ├── Stigma                   # PO: Pollen reception surface
    │   │       ├── Style                    # PO: Structure connecting stigma to ovary
    │   │       └── Ovary                    # PO: Ovule-containing chamber
    │   ├── Fruit                            # PO: Mature ovary with seeds
    │   │   ├── Pericarp                     # PO: Fruit wall
    │   │   │   ├── Exocarp                  # PO: Outer fruit layer
    │   │   │   ├── Mesocarp                 # PO: Middle fruit layer
    │   │   │   └── Endocarp                 # PO: Inner fruit layer
    │   │   └── Seed                         # PO: Plant embryo with coat
    │   │       ├── SeedCoat                 # PO: Protective seed covering
    │   │       ├── Endosperm                # PO: Nutritive tissue
    │   │       └── Embryo                   # PO:0009009 - Developing plant
    │   │           ├── Cotyledon            # PO: Seed leaves
    │   │           ├── Hypocotyl            # PO: Embryonic stem below cotyledons
    │   │           ├── Radicle              # PO: Embryonic root
    │   │           └── Plumule              # PO: Embryonic shoot
    │   └── Inflorescence                    # PO: Flower cluster arrangements
    │       ├── Raceme                       # PO: Simple elongated cluster
    │       ├── Panicle                      # PO: Branched flower cluster
    │       ├── Umbel                        # PO: Umbrella-like cluster
    │       └── Spike                        # PO: Dense elongated cluster
    └── PlantTissue                          # PO: Organized cell groups
        ├── VascularTissue                   # PO: Transport tissues
        │   ├── Xylem                        # PO: Water-conducting tissue
        │   ├── Phloem                       # PO: Food-conducting tissue
        │   └── Cambium                      # PO: Growth tissue
        ├── GroundTissue                     # PO: Basic plant tissues
        │   ├── Parenchyma                   # PO: Living storage tissue
        │   ├── Collenchyma                  # PO: Support tissue
        │   └── Sclerenchyma                 # PO: Strengthening tissue
        └── DermalTissue                     # PO: Protective surface tissues
            ├── Epidermis                    # PO: Outer protective layer
            │   ├── Cuticle                  # PO: Waxy protective coating
            │   ├── Stomata                  # PO: Gas exchange pores
            │   │   ├── GuardCell             # PO: Cells controlling stomatal opening
            │   │   └── StomatalPore          # PO: Actual opening
            │   └── Trichome                 # PO: Hair-like surface structures
            └── Periderm                     # PO: Secondary protective tissue

Step 2: Define Object Properties

  1. Go to Object Properties tab
  2. Click Create object property
  3. Define domain and range for plant disease diagnosis:
# Property Structure: PropertyName
#   Domain: [Class that HAS the property]
#   Range:  [Class that the property POINTS TO]

# PPIO-Inspired Plant-Pathogen Interaction Properties:

# Host-Pathogen Relationships (Core PPIO concepts)
pathogen_of                              # PPIO: Primary interaction property
  Domain: PlantPathogen  # WHAT is a pathogen of? → PlantPathogen
  Range:  HostPlant      # PATHOGEN of what host? → HostPlant

manifests_in_species                     # PPIO: Disease manifestation
  Domain: Disease        # WHAT manifests in species? → Disease  
  Range:  Plant          # MANIFESTS in what species? → Plant

expresses_phenotype                      # PPIO: Observable characteristics
  Domain: Plant          # WHAT expresses phenotype? → Plant
  Range:  Phenotype      # EXPRESSES what phenotype? → Phenotype

# Core Plant Disease Properties:
hasDisease
  Domain: Plant          # WHAT has a disease? → Plant
  Range:  Disease        # WHAT disease does it have? → Disease

causedBy
  Domain: Disease        # WHAT is caused by something? → Disease
  Range:  PlantPathogen  # WHAT causes it? → PlantPathogen (PPIO updated)

hasSymptom
  Domain: Disease        # WHAT has symptoms? → Disease
  Range:  DiseaseSymptom # WHAT symptoms? → DiseaseSymptom (PPIO updated)

shows_resistance_to                      # PPIO: Resistance mechanisms
  Domain: ResistantPlant # WHAT shows resistance? → ResistantPlant
  Range:  PlantPathogen  # RESISTANT to what? → PlantPathogen

able_to_acquire_resistance               # PPIO: Resistance potential
  Domain: Plant          # WHAT can acquire resistance? → Plant
  Range:  Disease        # RESISTANCE to what? → Disease

requiresTreatment
  Domain: Plant          # WHAT requires treatment? → Plant
  Range:  Treatment      # WHAT treatment? → Treatment

growsIn
  Domain: Plant          # WHAT grows somewhere? → Plant
  Range:  Environment    # WHERE does it grow? → Environment

# CropPest Ontology Properties:

infests                                   # CropPest: Pest infestation relationship
  Domain: Pest           # WHAT infests? → Pest
  Range:  Plant          # INFESTS what? → Plant

damages                                   # CropPest: Economic/physical damage
  Domain: Pest           # WHAT causes damage? → Pest
  Range:  Plant          # DAMAGES what? → Plant

controlledBy                             # CropPest: Pest management relationship
  Domain: Pest           # WHAT is controlled? → Pest
  Range:  IPMStrategy    # CONTROLLED by what? → IPMStrategy

feeds_on                                 # CropPest: Feeding relationship
  Domain: InsectPest     # WHAT feeds on plants? → InsectPest
  Range:  Plant          # FEEDS ON what? → Plant

vector_of                                # CropPest: Disease transmission
  Domain: InsectPest     # WHAT is a vector? → InsectPest
  Range:  PlantPathogen  # VECTOR of what pathogen? → PlantPathogen

susceptible_to_pest                      # CropPest: Plant vulnerability
  Domain: Plant          # WHAT is susceptible? → Plant
  Range:  Pest           # SUSCEPTIBLE to what pest? → Pest

targets                                  # CropPest: IPM targeting
  Domain: IPMStrategy    # WHAT targets pests? → IPMStrategy
  Range:  Pest           # TARGETS what pest? → Pest

monitors                                 # CropPest: Pest monitoring
  Domain: PhysicalControl # WHAT monitors? → PhysicalControl
  Range:  Pest           # MONITORS what? → Pest

susceptibleTo
  Domain: Plant          # WHAT is susceptible? → Plant
  Range:  Disease        # SUSCEPTIBLE to what? → Disease

infects
  Domain: Pathogen       # WHAT infects? → Pathogen
  Range:  Plant          # WHAT gets infected? → Plant

occursIn
  Domain: Disease        # WHAT occurs in time? → Disease
  Range:  Season         # WHEN does it occur? → Season

controlledBy
  Domain: Pathogen       # WHAT is controlled? → Pathogen
  Range:  Treatment      # WHAT controls it? → Treatment

effectiveAgainst
  Domain: Treatment      # WHAT is effective? → Treatment
  Range:  Disease        # EFFECTIVE against what? → Disease

# Plant Ontology (PO) Anatomical Properties:

# Anatomical Part-Whole Relationships
part_of                                  # PO: Anatomical containment
  Domain: PlantAnatomicalEntity # WHAT is part of something? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # PART OF what? → PlantAnatomicalEntity

has_part                                 # PO: Anatomical composition
  Domain: PlantAnatomicalEntity # WHAT has parts? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # HAS what parts? → PlantAnatomicalEntity

# Symptom Localization Properties (PO Enhanced)
occurs_on                                # PO: Symptom anatomical location
  Domain: DiseaseSymptom        # WHAT occurs on plant part? → DiseaseSymptom
  Range:  PlantAnatomicalEntity # OCCURS ON what part? → PlantAnatomicalEntity

affects_tissue                           # PO: Disease tissue targeting
  Domain: Disease               # WHAT affects tissue? → Disease
  Range:  PlantTissue          # AFFECTS what tissue? → PlantTissue

located_in                               # PO: Anatomical positioning
  Domain: DiseaseSymptom        # WHAT is located somewhere? → DiseaseSymptom
  Range:  PlantAnatomicalEntity # LOCATED IN what? → PlantAnatomicalEntity

# Plant Development Properties
develops_from                            # PO: Developmental origin
  Domain: PlantAnatomicalEntity # WHAT develops from something? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # DEVELOPS FROM what? → PlantAnatomicalEntity

develops_into                            # PO: Developmental progression  
  Domain: PlantAnatomicalEntity # WHAT develops into something? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # DEVELOPS INTO what? → PlantAnatomicalEntity

# Plant Structure Function Properties
connects                                 # PO: Structural connections
  Domain: PlantAnatomicalEntity # WHAT connects structures? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # CONNECTS what? → PlantAnatomicalEntity

protects                                 # PO: Protective relationships
  Domain: PlantAnatomicalEntity # WHAT protects? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # PROTECTS what? → PlantAnatomicalEntity

supports                                 # PO: Structural support
  Domain: PlantAnatomicalEntity # WHAT provides support? → PlantAnatomicalEntity
  Range:  PlantAnatomicalEntity # SUPPORTS what? → PlantAnatomicalEntity

transports                               # PO: Material transport
  Domain: VascularTissue        # WHAT transports materials? → VascularTissue
  Range:  PlantAnatomicalEntity # TRANSPORTS TO what? → PlantAnatomicalEntity

# AGROVOC Properties: FAO Agricultural Standards

# Wheat-Specific Disease Properties
affects_wheat_variety                     # AGROVOC: Disease-variety relationships
  Domain: WheatFungalDisease     # WHAT affects wheat variety? → WheatFungalDisease
  Range:  WheatHost             # AFFECTS what variety? → WheatHost

spreads_in_climate                       # AGROVOC: Climate-disease relationships
  Domain: Disease               # WHAT spreads in climate? → Disease
  Range:  ClimateCondition      # SPREADS IN what climate? → ClimateCondition

endemic_to_region                        # AGROVOC: Geographic disease distribution
  Domain: Disease               # WHAT is endemic? → Disease
  Range:  GeographicRegion      # ENDEMIC TO what region? → GeographicRegion

occurs_in_season                         # AGROVOC: Seasonal disease patterns
  Domain: WheatFungalDisease    # WHAT occurs seasonally? → WheatFungalDisease
  Range:  GrowingSeason         # OCCURS IN what season? → GrowingSeason

# Agricultural Management Properties
managed_by_practice                      # AGROVOC: Cultural disease management
  Domain: Disease               # WHAT is managed? → Disease
  Range:  AgriculturalPractice  # MANAGED BY what practice? → AgriculturalPractice

controlled_by_variety                    # AGROVOC: Genetic resistance
  Domain: WheatFungalDisease    # WHAT is controlled? → WheatFungalDisease
  Range:  ResistantWheatVariety # CONTROLLED BY what variety? → ResistantWheatVariety

# Multilingual Terminology Properties  
has_common_name                          # AGROVOC: Multilingual names
  Domain: Disease               # WHAT has common name? → Disease
  Range:  MultilingualName      # HAS what name? → MultilingualName

has_fao_code                            # AGROVOC: FAO classification codes
  Domain: Disease               # WHAT has FAO code? → Disease
  Range:  FAOClassificationCode # HAS what code? → FAOClassificationCode

# Cereal Disease Specificity
specific_to_cereal                       # AGROVOC: Cereal host specificity
  Domain: WheatFungalDisease    # WHAT is specific? → WheatFungalDisease
  Range:  CerealCrop            # SPECIFIC TO what cereal? → CerealCrop
Tip

Enhanced Plant Disease Context with AGROVOC:

  • hasDisease: Plant –[hasDisease]–> Disease
  • causedBy: Disease –[causedBy]–> Pathogen
  • hasSymptom: Disease –[hasSymptom]–> Symptom
  • treatedWith: Disease –[treatedWith]–> Treatment
  • affects_wheat_variety: WheatFungalDisease –[affects_wheat_variety]–> WheatHost
  • endemic_to_region: Disease –[endemic_to_region]–> GeographicRegion

These properties enable semantic reasoning with FAO agricultural standards and multilingual terminology.

Step 3: Add Data Properties

  1. Navigate to Data Properties tab
  2. Create properties with appropriate data types for plant disease diagnosis:
# PPIO-Inspired Data Properties

# Plant-Pathogen Interaction Data (PPIO Framework)
able_to_acquire_resistance: Plant → xsd:boolean    # PPIO: Resistance potential
host_specificity: PlantPathogen → xsd:string       # PPIO: Host range
pathogenicity_level: PlantPathogen → xsd:float     # PPIO: Virulence scale
resistance_mechanism: ResistantPlant → xsd:string  # PPIO: Type of resistance

# Plant Identification Data  
scientificName: Plant → xsd:string
commonName: Plant → xsd:string
plantAge: Plant → xsd:int
plantHeight: Plant → xsd:float
plantingDate: Plant → xsd:date
harvestDate: Plant → xsd:date

# Disease Characteristics Data
diseaseName: Disease → xsd:string
severityScore: Disease → xsd:float        # Scale 0-10
incubationPeriod: Disease → xsd:int       # Days
firstObserved: Disease → xsd:dateTime
lastTreated: Disease → xsd:dateTime
contagiousRadius: Disease → xsd:float     # Meters

# PPIO Phenotype Data
lesion_type: DiseaseSymptom → xsd:string            # PPIO: "necrotic", "chlorotic", etc.
symptom_progression: DiseaseSymptom → xsd:string    # PPIO: "rapid", "slow", "systemic"
phenotype_description: Phenotype → xsd:string       # PPIO: Detailed manifestation

# CropPest Ontology Data Properties

# Pest Characteristics
pest_life_cycle: Pest → xsd:int                     # CropPest: Days to complete cycle
feeding_behavior: InsectPest → xsd:string           # CropPest: "chewing", "sucking", "mining"
damage_threshold: Pest → xsd:float                  # CropPest: Economic injury level
mobility: Pest → xsd:string                         # CropPest: "high", "medium", "low"
host_range: Pest → xsd:string                       # CropPest: "polyphagous", "monophagous"
overwintering_stage: InsectPest → xsd:string        # CropPest: "egg", "larva", "pupa", "adult"

# Economic Impact Data
yield_loss_percentage: Pest → xsd:float             # CropPest: Expected crop yield reduction
economic_threshold: Pest → xsd:float                # CropPest: Management action threshold
crop_value_at_risk: Plant → xsd:decimal             # CropPest: Monetary value per acre/hectare

# IPM Strategy Data
efficacy_rate: IPMStrategy → xsd:float              # CropPest: Success percentage
application_timing: IPMStrategy → xsd:string        # CropPest: "early season", "mid season", etc.
compatibility: IPMStrategy → xsd:string             # CropPest: Compatible with other methods
residual_effect: ChemicalControl → xsd:int          # CropPest: Days of protection
selectivity: BiologicalControl → xsd:string         # CropPest: Target specificity

# Monitoring Data  
trap_count: PhysicalControl → xsd:int               # CropPest: Number of pests captured
scouting_frequency: IPMStrategy → xsd:int           # CropPest: Days between observations
detection_method: IPMStrategy → xsd:string          # CropPest: "visual", "pheromone", "sticky"

# Environmental Measurement Data
temperature: Environment → xsd:float      # Celsius
humidity: Environment → xsd:float         # Percentage
soilPH: Environment → xsd:float          # pH scale
rainfall: Environment → xsd:float        # mm per week
lightExposure: Environment → xsd:float    # Hours per day

# Treatment Application Data
dosage: Treatment → xsd:string
applicationFrequency: Treatment → xsd:int  # Days between applications
effectivenessRate: Treatment → xsd:float  # Success percentage
cost: Treatment → xsd:decimal             # Cost per application
applicationDate: Treatment → xsd:dateTime

# Symptom Measurement Data
symptomIntensity: Symptom → xsd:float     # Scale 0-10
affectedArea: Symptom → xsd:float         # Percentage of plant affected
progressRate: Symptom → xsd:string       # "slow", "moderate", "rapid"
visibility: Symptom → xsd:string         # "visible", "microscopic"

# Plant Ontology (PO) Anatomical Data Properties

# Anatomical Measurements
length: PlantAnatomicalEntity → xsd:float            # PO: Length in mm/cm
width: PlantAnatomicalEntity → xsd:float             # PO: Width in mm/cm
thickness: PlantAnatomicalEntity → xsd:float         # PO: Thickness in mm
diameter: PlantAnatomicalEntity → xsd:float          # PO: Diameter in mm/cm
surface_area: PlantAnatomicalEntity → xsd:float      # PO: Surface area in cm²

# Developmental Stage Data
developmental_stage: PlantAnatomicalEntity → xsd:string  # PO: "primordium", "mature", "senescent"
days_after_emergence: PlantAnatomicalEntity → xsd:int   # PO: Development timing
maturation_time: PlantAnatomicalEntity → xsd:int        # PO: Days to maturity

# Anatomical Position Data
position_on_axis: PlantAnatomicalEntity → xsd:string    # PO: "basal", "apical", "lateral"
node_number: Leaf → xsd:int                             # PO: Leaf position on stem
internode_number: Internode → xsd:int                   # PO: Internode position
depth_in_soil: Root → xsd:float                         # PO: Root depth in cm

# Tissue Characteristics
cell_density: PlantTissue → xsd:float                   # PO: Cells per unit area
tissue_thickness: PlantTissue → xsd:float               # PO: Tissue layer thickness
vascular_density: VascularTissue → xsd:float            # PO: Vascular bundles per area

# Leaf-Specific Measurements
leaf_area: Leaf → xsd:float                             # PO: Leaf surface area in cm²
stomatal_density: Leaf → xsd:float                      # PO: Stomata per unit area
leaf_mass: Leaf → xsd:float                             # PO: Leaf dry weight in grams
petiole_length: Petiole → xsd:float                     # PO: Petiole length in cm

# Root System Data
root_length: Root → xsd:float                           # PO: Total root length in cm
root_biomass: Root → xsd:float                          # PO: Root dry weight in grams
lateral_root_count: PrimaryRoot → xsd:int               # PO: Number of lateral roots
root_hair_density: Root → xsd:float                     # PO: Root hairs per unit length

# Stem Characteristics
stem_diameter: Stem → xsd:float                         # PO: Stem diameter in mm
internode_length: Internode → xsd:float                 # PO: Distance between nodes in cm
bark_thickness: Stem → xsd:float                        # PO: Bark thickness in mm

# Reproductive Structure Data
flower_diameter: Flower → xsd:float                     # PO: Flower diameter in mm
petal_count: Flower → xsd:int                           # PO: Number of petals
seed_count: Fruit → xsd:int                            # PO: Number of seeds per fruit
fruit_mass: Fruit → xsd:float                          # PO: Fruit weight in grams
seed_germination_rate: Seed → xsd:float                 # PO: Germination percentage

# AGROVOC Data Properties: FAO Agricultural Standards

# Wheat Disease Classification Data
fao_agrovoc_code: Disease → xsd:string                     # AGROVOC: FAO classification code
who_classification: Disease → xsd:string                    # AGROVOC: WHO disease classification  
disease_severity_scale: Disease → xsd:int                  # AGROVOC: FAO severity scale 1-5
economic_importance: Disease → xsd:string                  # AGROVOC: "high", "medium", "low"

# Multilingual Terminology Data
preferred_label_en: Disease → xsd:string                   # AGROVOC: English preferred term
preferred_label_es: Disease → xsd:string                   # AGROVOC: Spanish preferred term
preferred_label_fr: Disease → xsd:string                   # AGROVOC: French preferred term
preferred_label_ar: Disease → xsd:string                   # AGROVOC: Arabic preferred term
preferred_label_zh: Disease → xsd:string                   # AGROVOC: Chinese preferred term
preferred_label_ru: Disease → xsd:string                   # AGROVOC: Russian preferred term

# Wheat Variety Resistance Data  
resistance_gene: ResistantWheatVariety → xsd:string        # AGROVOC: Resistance gene names
breeding_line: WheatHost → xsd:string                      # AGROVOC: Breeding program code
maturity_group: WheatHost → xsd:string                     # AGROVOC: Early/mid/late maturity
winter_hardiness: WinterWheatHost → xsd:int               # AGROVOC: Cold tolerance scale 1-9

# Geographic and Climate Data
latitude_range: Disease → xsd:string                       # AGROVOC: Disease geographic range
altitude_range: Disease → xsd:string                       # AGROVOC: Elevation occurrence range
annual_rainfall_requirement: Disease → xsd:float          # AGROVOC: Rainfall for disease spread
temperature_optimum: Disease → xsd:float                  # AGROVOC: Optimal temperature for pathogen

# Agricultural Management Data
crop_rotation_cycle: AgriculturalPractice → xsd:int       # AGROVOC: Years in rotation
seed_treatment_required: WheatHost → xsd:boolean          # AGROVOC: Seed treatment necessity
fungicide_resistance_level: WheatFungalDisease → xsd:int  # AGROVOC: Resistance level 1-5
yield_loss_potential: WheatFungalDisease → xsd:float      # AGROVOC: Maximum yield loss %

# Temporal Disease Data
infection_period: Disease → xsd:string                     # AGROVOC: Disease timing
spore_survival_period: WheatFungalDisease → xsd:int       # AGROVOC: Days pathogen survives
disease_cycle_duration: Disease → xsd:int                 # AGROVOC: Complete disease cycle days

# FAO Statistical Data
global_occurrence_frequency: Disease → xsd:float          # AGROVOC: Worldwide occurrence %
first_reported_year: Disease → xsd:int                    # AGROVOC: Year of first report
quarantine_status: Disease → xsd:string                   # AGROVOC: Quarantine classification

Step 4: Create Individuals

  1. Go to Individuals tab
  2. Create instances for plant disease diagnosis system:
# PPIO-Inspired Plant Individuals

# Host Plants (PPIO Framework)
tomato_host_001: TomatoHost
  scientificName "Solanum lycopersicum"
  commonName "Roma Tomato"
  plantAge 45
  plantHeight 1.2
  plantingDate "2024-03-15"^^xsd:date
  able_to_acquire_resistance true           # PPIO: Can develop resistance
  growsIn greenhouse_environment_01
  hasDisease early_blight_case_01
  expresses_phenotype chlorotic_halo_phenotype

bean_host_002: BeanHost                     # PPIO: Phaseolus vulgaris host
  scientificName "Phaseolus vulgaris"
  commonName "Common Bean"
  plantAge 30
  able_to_acquire_resistance false          # PPIO: Natural susceptibility
  hasDisease bacterial_speck_case_01

# Resistant Plants (PPIO Framework)  
resistant_tomato_003: NaturallyResistantTomato
  scientificName "Solanum lycopersicum var. resistant"
  commonName "Resistant Roma Tomato" 
  resistance_mechanism "hypersensitive response"  # PPIO: Defense mechanism
  shows_resistance_to alternaria_solani_01
  able_to_acquire_resistance true

# Disease Individuals with PPIO Phenotypes
early_blight_case_01: EarlyBlight
  diseaseName "Early Blight"
  severityScore 7.5
  firstObserved "2024-04-20T10:30:00"^^xsd:dateTime
  causedBy alternaria_solani_01
  manifests_in_species tomato_host_001       # PPIO: Disease manifestation
  hasSymptom necrotic_lesions_01
  hasSymptom chlorotic_halo_01

bacterial_speck_case_01: BacterialSpeck     # PPIO: Pseudomonas disease
  diseaseName "Bacterial Speck of Bean"
  severityScore 6.0
  causedBy pseudomonas_phaseolicola_01       # PPIO reference pathogen
  manifests_in_species bean_host_002
  hasSymptom yellowing_01
  treatedWith fungicide_treatment_01
  occursIn summer

late_blight: LateBlight
  diseaseName "Late Blight"
  severityScore 9.0
  causedBy phytophthora_infestans_01

# Plant Pathogen Individuals (PPIO Framework)
alternaria_solani_01: AlternariaSolani        # PPIO: Specific pathogen species
  scientificName "Alternaria solani"
  host_specificity "Solanaceae family"        # PPIO: Host range
  pathogenicity_level 7.5                     # PPIO: Virulence level
  pathogen_of tomato_host_001                  # PPIO: Host relationship
  contagiousRadius 5.0
  controlledBy fungicide_treatment_01

pseudomonas_phaseolicola_01: PseudomonasPhaseolicola  # PPIO reference organism
  scientificName "Pseudomonas syringae pv. phaseolicola"
  host_specificity "Phaseolus vulgaris"       # PPIO: Bean-specific pathogen
  pathogenicity_level 6.0
  pathogen_of bean_host_002                    # PPIO: Host specificity

phytophthora_infestans_01: PhytophthoraInfestans
  scientificName "Phytophthora infestans"
  host_specificity "Solanaceae family"
  pathogenicity_level 9.5                     # PPIO: High virulence
  contagiousRadius 10.0

# PPIO Phenotype Individuals (Observable Disease Characteristics)
chlorotic_halo_phenotype: ChloroticHalo       # PPIO: Yellowing around lesions
  phenotype_description "Yellow halo surrounding necrotic tissue"
  lesion_type "chlorotic"
  symptom_progression "gradual"

necrotic_lesions_01: NecroticLesions          # PPIO: Cell death symptoms
  phenotype_description "Brown, dead tissue spots on leaves"
  lesion_type "necrotic"
  symptom_progression "rapid"
  symptomIntensity 8.0
  affectedArea 0.3
  visibility "visible"

chlorotic_halo_01: ChloroticHalo              # PPIO: Associated with necrosis
  phenotype_description "Yellow border around lesions"
  lesion_type "chlorotic"
  symptom_progression "slow"
  symptomIntensity 6.5
  affectedArea 0.4
  visibility "visible"

# CropPest Individuals (Comprehensive Pest Management)

# Insect Pest Individuals
green_peach_aphid_001: GreenPeachAphid      # CropPest: Major tomato pest
  scientificName "Myzus persicae"
  pest_life_cycle 14                        # CropPest: Days to complete cycle
  feeding_behavior "sucking"                 # CropPest: Piercing-sucking mouthparts
  damage_threshold 10.0                     # CropPest: Aphids per plant threshold
  mobility "high"                           # CropPest: Strong dispersal ability
  host_range "polyphagous"                  # CropPest: Many host plants
  overwintering_stage "egg"                 # CropPest: Survival strategy
  infests tomato_host_001
  vector_of cucumber_mosaic_virus_001       # CropPest: Disease transmission
  damages tomato_host_001
  yield_loss_percentage 15.0               # CropPest: Economic impact

colorado_potato_beetle_001: ColoradoPotatoBeetle  # CropPest: Potato specialist
  scientificName "Leptinotarsa decemlineata"
  pest_life_cycle 45                       # CropPest: Longer development time
  feeding_behavior "chewing"                # CropPest: Leaf consumption
  damage_threshold 0.5                     # CropPest: Beetles per plant
  mobility "medium"                         # CropPest: Limited flight
  host_range "monophagous"                  # CropPest: Solanaceae specialist
  overwintering_stage "adult"              # CropPest: Adult survival
  infests potato_host_002
  damages potato_host_002
  yield_loss_percentage 25.0               # CropPest: High economic impact

# Spider Mite Individuals
two_spotted_spider_mite_001: TwoSpottedSpiderMite  # CropPest: Greenhouse pest
  scientificName "Tetranychus urticae"
  pest_life_cycle 7                        # CropPest: Rapid reproduction
  feeding_behavior "sucking"                # CropPest: Cell content feeding
  damage_threshold 5.0                     # CropPest: Mites per leaf
  mobility "low"                            # CropPest: Wind dispersal
  host_range "polyphagous"                  # CropPest: Wide host range
  infests tomato_host_001
  damages tomato_host_001
  yield_loss_percentage 12.0

# IPM Strategy Individuals (CropPest Management)
aphid_ipm_program_001: BiologicalControl    # CropPest: Integrated approach
  efficacy_rate 85.0                       # CropPest: Success rate
  application_timing "early season"         # CropPest: Preventive approach
  compatibility "high"                      # CropPest: Works with other methods
  selectivity "specific"                    # CropPest: Target pest specific
  targets green_peach_aphid_001
  scouting_frequency 7                     # CropPest: Weekly monitoring

ladybeetle_release_001: LadybeetleRelease   # CropPest: Biological control agent
  efficacy_rate 70.0
  application_timing "mid season"
  selectivity "aphid specific"
  targets green_peach_aphid_001
  controlledBy green_peach_aphid_001

pheromone_trap_001: PheromoneTraps          # CropPest: Monitoring tool
  trap_count 25                            # CropPest: Weekly capture count
  detection_method "pheromone"             # CropPest: Chemical attractant
  monitors colorado_potato_beetle_001
  efficacy_rate 95.0                       # CropPest: Detection accuracy

bt_spray_001: BacillusThuringiensis        # CropPest: Microbial insecticide
  efficacy_rate 80.0
  application_timing "larval stage"         # CropPest: Target vulnerable stage
  residual_effect 7                        # CropPest: Days of protection
  selectivity "caterpillar specific"       # CropPest: Lepidoptera target

# Environment Individuals
greenhouse_environment_01: GreenhouseEnvironment
  temperature 24.5
  humidity 85.0
  soilPH 6.2
  lightExposure 12.0
  
field_environment_02: FieldEnvironment
  temperature 22.0
  humidity 70.0
  soilPH 6.8
  rainfall 15.0
  lightExposure 8.0

# Treatment Individuals
fungicide_treatment_01: FungicideTreatment
  dosage "2ml per liter"
  applicationFrequency 7
  effectivenessRate 85.0
  cost 12.50
  applicationDate "2024-04-21T08:00:00"^^xsd:dateTime
  effectiveAgainst early_blight_case_01

# Season Individuals
summer: Summer
spring: Spring
autumn: Autumn
winter: Winter

# Plant Ontology (PO) Anatomical Individuals

# Tomato Plant Anatomical Structure (PO Framework)
tomato_plant_whole_001: WholePlant              # PO:0000003 - Complete plant organism
  developmental_stage "mature"                  # PO: Mature development stage
  days_after_emergence 65                      # PO: Plant age from emergence
  part_of tomato_host_001                       # PO: Anatomical relationship

# Root System Components (PO)
tomato_primary_root_001: PrimaryRoot            # PO: Main taproot
  length 25.5                                   # PO: Root length in cm
  diameter 0.8                                  # PO: Root diameter in cm
  depth_in_soil 20.0                           # PO: Depth below surface
  lateral_root_count 15                        # PO: Number of laterals
  part_of tomato_plant_whole_001
  develops_from tomato_radicle_001

tomato_lateral_root_002: LateralRoot            # PO: Secondary root branch
  length 12.3                                   # PO: Lateral root length
  root_hair_density 45.0                       # PO: Root hairs per cm
  part_of tomato_primary_root_001
  
# Shoot System Components (PO)  
tomato_main_stem_001: Stem                      # PO:0009047 - Main stem
  length 85.0                                   # PO: Stem length in cm
  diameter 1.2                                  # PO: Stem diameter in cm
  internode_length 4.5                         # PO: Average internode length
  part_of tomato_plant_whole_001
  supports tomato_leaf_set_001

tomato_node_001: Node                           # PO: First leaf attachment point
  node_number 1                                 # PO: Node position on stem
  part_of tomato_main_stem_001

tomato_internode_001: Internode                 # PO: Stem segment between nodes
  length 4.8                                    # PO: Internode length
  internode_number 1                            # PO: Internode position
  part_of tomato_main_stem_001

# Leaf System (PO Detailed)
tomato_first_leaf_001: Leaf                     # PO:0009025 - First true leaf
  leaf_area 15.6                               # PO: Leaf area in cm²
  leaf_mass 0.35                               # PO: Leaf dry weight in grams
  node_number 1                                # PO: Leaf position on stem
  developmental_stage "mature"                  # PO: Development stage
  part_of tomato_node_001
  occurs_on leaf_spots_po_001                   # PO: Symptom localization

tomato_leaf_blade_001: LeafBlade               # PO: Expanded leaf portion
  length 8.2                                   # PO: Blade length in cm
  width 6.1                                    # PO: Blade width in cm
  thickness 0.3                                # PO: Leaf thickness in mm
  part_of tomato_first_leaf_001

tomato_petiole_001: Petiole                    # PO: Leaf stalk
  length 2.8                                   # PO: Petiole length in cm
  diameter 0.3                                 # PO: Petiole diameter in cm
  part_of tomato_first_leaf_001
  connects tomato_first_leaf_001, tomato_node_001

# Tissue-Level Anatomy (PO)
tomato_leaf_epidermis_001: Epidermis           # PO: Outer protective layer
  tissue_thickness 0.02                        # PO: Epidermis thickness in mm
  stomatal_density 285.0                       # PO: Stomata per cm²
  part_of tomato_leaf_blade_001
  protects tomato_leaf_mesophyll_001

tomato_stomata_001: Stomata                    # PO: Gas exchange pores
  cell_density 285.0                           # PO: Stomatal density
  part_of tomato_leaf_epidermis_001

tomato_leaf_vascular_001: VascularTissue       # PO: Transport tissue in leaf
  vascular_density 12.5                        # PO: Vascular bundles per cm²
  part_of tomato_leaf_blade_001
  transports tomato_leaf_blade_001

# Disease-Affected Anatomical Parts (PO + Disease Integration)
leaf_spots_po_001: LeafSpots                   # Disease symptom with PO location
  occurs_on tomato_leaf_blade_001               # PO: Anatomical localization
  located_in tomato_leaf_epidermis_001          # PO: Tissue-level location  
  affects_tissue tomato_leaf_epidermis_001      # PO: Tissue targeting
  symptomIntensity 7.5                          # Disease severity
  affectedArea 0.25                            # Percentage of leaf affected

# Reproductive Structures (PO)
tomato_flower_001: Flower                       # PO: Complete flower structure
  flower_diameter 12.0                         # PO: Flower diameter in mm
  petal_count 5                                # PO: Number of petals
  developmental_stage "mature"                  # PO: Flower development
  part_of tomato_plant_whole_001

tomato_fruit_001: Fruit                        # PO: Mature tomato fruit
  fruit_mass 125.5                             # PO: Fruit weight in grams
  seed_count 85                                # PO: Number of seeds
  developmental_stage "ripe"                    # PO: Fruit maturity
  part_of tomato_plant_whole_001
  develops_from tomato_flower_001

# Embryonic Structures (PO Development)
tomato_radicle_001: Radicle                    # PO: Embryonic root
  length 0.8                                   # PO: Radicle length in mm
  developmental_stage "primordium"              # PO: Early development
  develops_into tomato_primary_root_001

Advanced Features

1. Class Expressions

Create complex class definitions for plant disease diagnosis:

# Intersection (AND) - Plants that are both diseased AND require immediate treatment
SeverelyDiseasedPlant ≡ Plant ⊓ hasDisease some Disease ⊓ 
                        hasDisease some (hasSeverity some xsd:float[>= 8.0])

# Union (OR) - Plants affected by either fungal OR bacterial diseases  
PathogenAffectedPlant ≡ hasDisease some FungalDisease ⊔ 
                        hasDisease some BacterialDisease

# Intersection with Environmental Factors
HighRiskPlant ≡ Plant ⊓ growsIn some (hasHumidity some xsd:float[>= 80.0]) ⊓
                        susceptibleTo some Disease

# Complex Disease Classification
CriticalDisease ≡ Disease ⊓ hasSeverity some xsd:float[>= 9.0] ⊓
                           hasSymptom some (progressRate value "rapid")

# Treatment-Ready Plants
TreatmentCandidatePlant ≡ Plant ⊓ hasDisease some Disease ⊓
                                  ¬(treatedWith some Treatment)

# Seasonal Disease Risk
SummerRiskPlant ≡ Plant ⊓ susceptibleTo some (occursIn value summer) ⊓
                          growsIn some (hasTemperature some xsd:float[>= 25.0])

# Complement (NOT) - Healthy plants (not diseased)
HealthyPlant ≡ Plant ⊓ ¬(hasDisease some Disease)

# Plants requiring fungicide (specific treatment type)
FungicideRequiredPlant ≡ Plant ⊓ hasDisease some FungalDisease ⊓
                                  requiresTreatment some FungicideTreatment

2. Property Characteristics

Define special property behaviors with plant disease examples:

Functional Properties

Each individual has at most one value:

# Each plant has exactly one scientific name
scientificName: Functional
# Each disease has exactly one severity score at a time
severityScore: Functional
# Each plant has exactly one current age
plantAge: Functional

Inverse Functional Properties

Each value corresponds to at most one individual:

# Each scientific name belongs to exactly one plant species
scientificName: InverseFunctional
# Each specific GPS location has at most one environment
hasGPSLocation: InverseFunctional

Transitive Properties

If A relates to B and B relates to C, then A relates to C:

# Disease inheritance: if Disease A develops into B, and B into C, then A develops into C
developsInto: Transitive
# Environmental influence: if Plant affects Environment A, and A affects B, then Plant affects B
environmentallyConnectedTo: Transitive

Symmetric Properties

If A relates to B, then B relates to A:

# Plants growing near each other
growsNearTo: Symmetric
# Diseases that co-occur together
coOccursWith: Symmetric

Asymmetric Properties

If A relates to B, then B does not relate to A:

# Disease causation is one-way: pathogen causes disease, not vice versa
causedBy: Asymmetric
# Treatment application: treatment is applied to disease, not reverse
treatedWith: Asymmetric

Reflexive Properties

Every individual relates to itself:

# Every plant is compatible with itself for breeding
compatibleWith: Reflexive

Irreflexive Properties

No individual relates to itself:

# A plant cannot infect itself
infects: Irreflexive
# A disease cannot be caused by itself
causedBy: Irreflexive

3. Reasoning

Enable Reasoners

  1. Go to Reasoner menu

  2. Select a reasoner:

    • HermiT: Complete OWL 2 reasoner
    • Pellet: Good performance for most ontologies (need pellet plugin)
    • FaCT++: Fast for classification (need fact++ plugin)

Reasoning Tasks

  • Classify: Compute class hierarchy
  • Check Consistency: Verify ontology is logically consistent
  • Realize: Compute individual types

4. SWRL Rules

SWRL (Semantic Web Rule Language) allows you to create custom reasoning rules that extend your ontology’s inference capabilities.

Accessing SWRL in Protégé

  1. Navigate to SWRL tab (bottom of interface)
  2. Click “New Rule” to create a rule
  3. Enter rule syntax in the rule editor
  4. Enable reasoning to see rule effects

Plant Disease SWRL Examples (PPIO-Inspired)

Create practical rules for plant disease diagnosis based on PPIO framework:

# PPIO Rule 1: Host-Pathogen Specificity (Core PPIO Concept)
# If a pathogen is specific to a host and the plant is that host, infection can occur
pathogen_of(?pathogen, ?hostType) ∧ ?hostType(?plant) 
→ susceptibleTo(?plant, ?pathogen)

# PPIO Rule 2: Phenotype Expression (PPIO Framework)
# If a plant has a disease that manifests specific phenotypes, express those phenotypes
hasDisease(?plant, ?disease) ∧ manifests_in_species(?disease, ?plant) ∧
causedBy(?disease, ?pathogen) ∧ expresses_phenotype(?plant, NecroticLesions)
→ expresses_phenotype(?plant, ChloroticHalo)

# PPIO Rule 3: Resistance Mechanism (PPIO Defense)
# If a plant can acquire resistance and shows resistance response, it becomes resistant
able_to_acquire_resistance(?plant, true) ∧ expresses_phenotype(?plant, HypersensitiveResponse)
→ ResistantPlant(?plant)

# PPIO Rule 4: Host Range Inference (PPIO Specificity)
# If a pathogen has Solanaceae host specificity, it can infect tomato and potato hosts
host_specificity(?pathogen, "Solanaceae family") ∧ TomatoHost(?plant)
→ pathogen_of(?pathogen, ?plant)

# Rule 5: Disease Inheritance (Enhanced with PPIO)
# If a plant has a fungal disease, it requires fungicide treatment
hasDisease(?plant, ?disease) ∧ FungalDisease(?disease) 
→ requiresTreatment(?plant, Fungicide)

# Rule 6: PPIO Symptom-based Disease Inference  
# Plants showing necrotic lesions and chlorotic halos likely have early blight
expresses_phenotype(?plant, NecroticLesions) ∧ expresses_phenotype(?plant, ChloroticHalo)
→ likelyHasDisease(?plant, EarlyBlight)

# Rule 7: PPIO Pathogenicity Level Assessment
# If pathogen has high pathogenicity and infects susceptible host, severe disease results
pathogenicity_level(?pathogen, ?level) ∧ swrlb:greaterThan(?level, 8.0) ∧
pathogen_of(?pathogen, ?plant) ∧ HostPlant(?plant)
→ severityScore(?disease, 9.0)

# Rule 8: Environmental Risk Assessment (PPIO Enhanced)
# Plants in high humidity with poor air circulation are disease-prone
growsIn(?plant, ?environment) ∧ hasHumidity(?environment, High) ∧ 
hasAirCirculation(?environment, Poor)
→ isDiseaseRisk(?plant, true)

# Rule 9: Resistance Breaking (PPIO Concept)
# If pathogen pathogenicity exceeds plant resistance threshold, resistance is overcome
pathogenicity_level(?pathogen, ?pLevel) ∧ resistance_mechanism(?plant, ?mechanism) ∧
swrlb:greaterThan(?pLevel, 8.5) ∧ pathogen_of(?pathogen, ?plant)
→ able_to_acquire_resistance(?plant, false)

# CropPest Rules 10-15: Integrated Pest Management (IPM)

# Rule 10: Economic Threshold Decision (CropPest)
# If pest count exceeds damage threshold, trigger control action
infests(?pest, ?plant) ∧ damage_threshold(?pest, ?threshold) ∧
trap_count(?monitor, ?count) ∧ monitors(?monitor, ?pest) ∧
swrlb:greaterThan(?count, ?threshold)
→ requiresTreatment(?plant, IPMStrategy)

# Rule 11: Pest-Vector Disease Transmission (CropPest)
# If insect pest is vector of pathogen and infests plant, plant gets disease
vector_of(?insect, ?pathogen) ∧ infests(?insect, ?plant) ∧
InsectPest(?insect) ∧ PlantPathogen(?pathogen)
→ causedBy(?disease, ?pathogen) ∧ hasDisease(?plant, ?disease)

# Rule 12: Host Range Pest Susceptibility (CropPest)
# If pest has polyphagous host range, more plants are susceptible
host_range(?pest, "polyphagous") ∧ Plant(?plant)
→ susceptible_to_pest(?plant, ?pest)

# Rule 13: IPM Strategy Selection (CropPest)
# If pest has high mobility, use area-wide control strategies
mobility(?pest, "high") ∧ infests(?pest, ?plant) ∧
IPMStrategy(?strategy) ∧ targets(?strategy, ?pest)
→ requiresTreatment(?plant, ?strategy)

# Rule 14: Biological Control Timing (CropPest)
# If pest life cycle is short, use frequent biological releases
pest_life_cycle(?pest, ?days) ∧ swrlb:lessThan(?days, 21) ∧
BiologicalControl(?control) ∧ targets(?control, ?pest)
→ application_timing(?control, "frequent")

# Rule 15: Economic Impact Assessment (CropPest)
# If yield loss percentage is high, prioritize immediate control
yield_loss_percentage(?pest, ?loss) ∧ swrlb:greaterThan(?loss, 20.0) ∧
infests(?pest, ?plant) ∧ IPMStrategy(?strategy) ∧ targets(?strategy, ?pest)
→ requiresTreatment(?plant, ?strategy)

# Rule 16: Resistance Management (CropPest)
# If pest shows resistance to chemical control, switch to biological
ChemicalControl(?chemical) ∧ efficacy_rate(?chemical, ?rate) ∧
swrlb:lessThan(?rate, 60.0) ∧ targets(?chemical, ?pest) ∧
BiologicalControl(?biological) ∧ targets(?biological, ?pest)
→ controlledBy(?pest, ?biological)

# Plant Ontology Rules 17-22: Anatomical Localization & Development

# Rule 17: Symptom Anatomical Localization (PO)
# If disease symptom occurs on specific plant part, localize precisely
occurs_on(?symptom, ?plantPart) ∧ PlantAnatomicalEntity(?plantPart) ∧
part_of(?plantPart, ?wholePlant) ∧ WholePlant(?wholePlant)
→ located_in(?symptom, ?plantPart)

# Rule 18: Tissue-Level Disease Targeting (PO)  
# If disease affects leaves and symptom is visible, it targets epidermis
hasSymptom(?disease, ?symptom) ∧ occurs_on(?symptom, ?leaf) ∧
Leaf(?leaf) ∧ visibility(?symptom, "visible") ∧
part_of(?epidermis, ?leaf) ∧ Epidermis(?epidermis)
→ affects_tissue(?disease, ?epidermis)

# Rule 19: Vascular Disease Spread (PO)
# If disease affects vascular tissue, it can spread systemically
affects_tissue(?disease, ?vascular) ∧ VascularTissue(?vascular) ∧
transports(?vascular, ?plantPart) ∧ PlantAnatomicalEntity(?plantPart)
→ manifests_in_species(?disease, ?plantPart)

# Rule 20: Developmental Stage Vulnerability (PO)
# If plant part is in primordium stage, it's more susceptible to disease
developmental_stage(?plantPart, "primordium") ∧ 
PlantAnatomicalEntity(?plantPart) ∧ part_of(?plantPart, ?plant)
→ susceptibleTo(?plant, Disease)

# Rule 21: Root Disease Impact on Whole Plant (PO)
# If root system is diseased, whole plant health is affected
hasSymptom(?disease, ?symptom) ∧ occurs_on(?symptom, ?root) ∧
Root(?root) ∧ part_of(?root, ?wholePlant) ∧ WholePlant(?wholePlant)
→ hasDisease(?wholePlant, ?disease)

# Rule 22: Anatomical Development Progression (PO)
# If embryonic structure develops into mature structure, inherit properties
develops_from(?mature, ?embryonic) ∧ developmental_stage(?embryonic, "primordium") ∧
hasDisease(?plant, ?disease) ∧ part_of(?embryonic, ?plant)
→ susceptibleTo(?mature, ?disease)

# Rule 23: Leaf Position Disease Gradient (PO)
# Lower leaves (higher node numbers) are more susceptible to soil-borne diseases  
node_number(?leaf, ?nodeNum) ∧ swrlb:greaterThan(?nodeNum, 5) ∧
Leaf(?leaf) ∧ part_of(?leaf, ?plant) ∧ FungalDisease(?disease)
→ susceptibleTo(?plant, ?disease)

# Rule 24: Tissue Thickness and Disease Penetration (PO)
# If tissue is thin and disease is present, penetration is easier
tissue_thickness(?tissue, ?thickness) ∧ swrlb:lessThan(?thickness, 0.1) ∧
PlantTissue(?tissue) ∧ part_of(?tissue, ?plant) ∧
hasDisease(?plant, ?disease) ∧ FungalDisease(?disease)
→ affects_tissue(?disease, ?tissue)

# Rule 25: Stomatal Density and Pathogen Entry (PO)
# High stomatal density increases pathogen entry points
stomatal_density(?epidermis, ?density) ∧ swrlb:greaterThan(?density, 300.0) ∧
Epidermis(?epidermis) ∧ part_of(?epidermis, ?leaf) ∧
part_of(?leaf, ?plant) ∧ PlantPathogen(?pathogen)
→ pathogen_of(?pathogen, ?plant)

Step-by-Step SWRL Rule Creation

Example: Creating a Disease Treatment Rule

  1. Open SWRL Tab: Click on “SWRL” at bottom of Protégé

  2. Create New Rule: Click “+” or “Add Rule” button

  3. Enter Rule:

    hasDisease(?p, ?d) ∧ FungalDisease(?d) → requiresTreatment(?p, Fungicide)
  4. Name Rule: “FungalDiseaseTreatment”

  5. Enable Reasoning: Go to Reasoner → Start Reasoner

  6. Check Inferences: View inferred axioms under “Inferences”

SWRL Rule Components

Atoms (Basic Building Blocks):

  • Class atoms: Plant(?x), Disease(?d)
  • Property atoms: hasDisease(?p, ?d), growsIn(?p, ?e)
  • Data atoms: hasAge(?p, ?age), hasSeverity(?d, "high")
  • Built-ins: swrlb:greaterThan(?x, 10)

Logical Operators:

  • ∧ (AND): Multiple conditions must be true
  • → (IMPLIES): If antecedent then consequent
  • Variables: ?plant, ?disease, ?x (start with ?)

Advanced SWRL Features

# Using built-in functions for numeric comparisons
hasTemperature(?env, ?temp) ∧ swrlb:greaterThan(?temp, 25) 
→ isOptimalFor(?env, FungalGrowth)

# String operations  
hasName(?plant, ?name) ∧ swrlb:contains(?name, "tomato")
→ belongsToFamily(?plant, Solanaceae)

# Date/time reasoning
plantedOn(?plant, ?date) ∧ swrlb:daysSince(?date, ?days) ∧ 
swrlb:greaterThan(?days, 30)
→ isReadyForHarvest(?plant, true)

Testing Your Rules

  1. Create Test Individuals:

    Individual: my_tomato
    Types: TomatoPlant
    Facts: hasDisease early_blight
  2. Add Disease Classification:

    Individual: early_blight  
    Types: FungalDisease
  3. Run Reasoner: Enable HermiT or Pellet reasoner

  4. Check Inferences: Look for new inferred relationships

    # Should infer: my_tomato requiresTreatment Fungicide

Best Practices for SWRL

  • Start Simple: Begin with basic if-then rules
  • Test Incrementally: Add one rule at a time
  • Use Meaningful Names: Clear variable and rule names
  • Check Consistency: Rules can introduce contradictions
  • Performance Impact: Too many rules slow reasoning
Warning

SWRL Limitations:

  • Decidability: Complex rules may cause infinite reasoning
  • Performance: Many rules can slow down reasoning significantly
  • Debugging: Use Protégé’s explanation feature for troubleshooting
  • Open World: Remember OWL’s open-world assumption affects rule behavior

Working with Existing Ontologies

Import External Ontologies

  1. File → Import ontology
  2. Choose from:
    • Local file: Load .owl, .rdf, .ttl files
    • Web URL: Import from online sources
    • Common ontologies: FOAF, Dublin Core, etc.

Best Practices

1. Naming Conventions

  • Classes: Use UpperCamelCase (e.g., TomatoPlant, FungalDisease, EarlyBlight)
  • Properties: Use lowerCamelCase (e.g., hasDisease, causedBy, treatedWith)
  • Individuals: Use descriptive_lowercase_with_underscores (e.g., tomato_plant_001, early_blight_case_01)
  • Prefixes: Use meaningful domain prefixes (e.g., plant:, disease:, pathogen:)

2. Documentation for Plant Disease Ontology

  • Always add annotations to classes and properties with agricultural context
  • Use rdfs:label for human-readable names (e.g., “Early Blight of Tomato”)
  • Add rdfs:comment with detailed descriptions including:
    • Scientific names for organisms
    • Symptoms and visual identification
    • Treatment protocols and timing
    • Environmental conditions

3. Modular Design for Plant Disease Systems

  • Plant Module: Basic plant taxonomy and anatomy
  • Disease Module: Pathology, symptoms, and diagnosis
  • Pathogen Module: Fungi, bacteria, viruses causing disease
  • Environment Module: Soil, climate, and growing conditions
  • Treatment Module: Interventions, chemicals, and management
  • Temporal Module: Seasonality, growth stages, and timing
  • Use imports for standard vocabularies (Plant Ontology, ENVO)
  • Create versioned modules for different crop types or regions

Integration with Python

Once you’ve created your plant disease ontology in Protégé, integrate it with Python for automated reasoning:

from owlready2 import *
import logging

# Suppress OWLready2 warnings for cleaner output
logging.getLogger('owlready2').setLevel(logging.ERROR)

print("Plant Disease Ontology Integration with Python")
print("=" * 50)

# Create a simple plant disease ontology for demonstration
onto = get_ontology("http://example.org/plant_disease")

with onto:
    # Define base classes
    class Plant(Thing): pass
    class Disease(Thing): pass
    class Pathogen(Thing): pass
    class Treatment(Thing): pass
    class Symptom(Thing): pass
    
    # Define plant types
    class TomatoPlant(Plant): pass
    class PotatoPlant(Plant): pass
    
    # Define disease types
    class FungalDisease(Disease): pass
    class BacterialDisease(Disease): pass
    
    # Define specific diseases
    class EarlyBlight(FungalDisease): pass
    class LateBlight(FungalDisease): pass
    
    # Define pathogens
    class AlternariaFungus(Pathogen): pass
    class PhytophthoraFungus(Pathogen): pass
    
    # Define treatments
    class FungicideTreatment(Treatment): pass
    
    # Define symptoms
    class LeafSpots(Symptom): pass
    class Yellowing(Symptom): pass
    
    # Define object properties
    class hasDisease(ObjectProperty):
        domain = [Plant]
        range = [Disease]
    
    class causedBy(ObjectProperty):
        domain = [Disease]
        range = [Pathogen]
    
    class hasSymptom(ObjectProperty):
        domain = [Disease]
        range = [Symptom]
    
    class treatedWith(ObjectProperty):
        domain = [Disease]
        range = [Treatment]
    
    # Define data properties
    class scientificName(DataProperty, FunctionalProperty):
        domain = [Plant]
        range = [str]
    
    class severityScore(DataProperty, FunctionalProperty):
        domain = [Disease]
        range = [float]
    
    class plantAge(DataProperty, FunctionalProperty):
        domain = [Plant]
        range = [int]

# Create individuals for demonstration
print("\n1. Creating Plant Disease Instances")
print("-" * 35)

# Create plant individual
my_tomato = TomatoPlant("my_tomato_plant")
my_tomato.scientificName = "Solanum lycopersicum"  # Removed list brackets
my_tomato.plantAge = 45  # Removed list brackets

# Create disease individual
blight_infection = EarlyBlight("blight_infection_001")
blight_infection.severityScore = 7.5  # Removed list brackets

# Create pathogen individual
alternaria_pathogen = AlternariaFungus("alternaria_solani_001")

# Create symptom individuals
leaf_spots = LeafSpots("leaf_spots_001")
yellowing = Yellowing("yellowing_001")

# Create treatment individual
fungicide = FungicideTreatment("copper_fungicide_001")

# Establish relationships
my_tomato.hasDisease = [blight_infection]
blight_infection.causedBy = [alternaria_pathogen]
blight_infection.hasSymptom = [leaf_spots, yellowing]
blight_infection.treatedWith = [fungicide]

print(f"✓ Created tomato plant: {my_tomato.scientificName}")
print(f"✓ Plant age: {my_tomato.plantAge} days")
print(f"✓ Disease severity: {blight_infection.severityScore}/10")
print(f"✓ Symptoms: {len(blight_infection.hasSymptom)} identified")

# Query the ontology
print("\n2. Querying Plant Disease Information")
print("-" * 40)

# Find all plants with diseases
diseased_plants = []
for plant in onto.Plant.instances():
    if plant.hasDisease:
        diseased_plants.append(plant)
        print(f"🌱 {plant.name}: {getattr(plant, 'scientificName', 'Unknown species')}")
        for disease in plant.hasDisease:
            print(f"   🦠 Disease: {disease.__class__.__name__}")
            print(f"   📊 Severity: {getattr(disease, 'severityScore', 'Not recorded')}/10")
            if disease.hasSymptom:
                symptoms = [s.__class__.__name__ for s in disease.hasSymptom]
                print(f"   🔍 Symptoms: {', '.join(symptoms)}")

# Reasoning demonstration
print("\n3. Automatic Classification and Reasoning")
print("-" * 45)

# Add logical rules
with onto:
    # Rule: All early blight is a fungal disease (already implicit in class hierarchy)
    # Rule: Plants with fungal diseases should be treated with fungicides
    class PlantNeedingFungicide(Plant):
        equivalent_to = [Plant & hasDisease.some(FungalDisease)]

# Enable reasoning
try:
    with onto:
        sync_reasoner_pellet()
    
    # Check inferred classifications
    for plant in onto.Plant.instances():
        if isinstance(plant, PlantNeedingFungicide):
            print(f"🧪 Reasoner inferred: {plant.name} needs fungicide treatment")
            
except Exception as e:
    print(f"⚠️  Reasoning requires additional setup: {e}")
    print("   Install Pellet reasoner or use HermiT for full reasoning capabilities")

# Summary
print("\n4. Integration Summary")
print("-" * 25)
print(f"📈 Total classes: {len(list(onto.classes()))}")
print(f"🔗 Total object properties: {len(list(onto.object_properties()))}")
print(f"📊 Total data properties: {len(list(onto.data_properties()))}")
print(f"🌱 Total individuals: {len(list(onto.individuals()))}")

print("\n✅ Plant disease ontology successfully integrated with Python!")
print("   Ready for: automated diagnosis, treatment recommendations, and semantic queries")
Plant Disease Ontology Integration with Python
==================================================

1. Creating Plant Disease Instances
-----------------------------------
✓ Created tomato plant: Solanum lycopersicum
✓ Plant age: 45 days
✓ Disease severity: 7.5/10
✓ Symptoms: 2 identified

2. Querying Plant Disease Information
----------------------------------------
🌱 my_tomato_plant: Solanum lycopersicum
   🦠 Disease: EarlyBlight
   📊 Severity: 7.5/10
   🔍 Symptoms: LeafSpots, Yellowing

3. Automatic Classification and Reasoning
---------------------------------------------
🧪 Reasoner inferred: my_tomato_plant needs fungicide treatment

4. Integration Summary
-------------------------
📈 Total classes: 17
🔗 Total object properties: 4
📊 Total data properties: 3
🌱 Total individuals: 6

✅ Plant disease ontology successfully integrated with Python!
   Ready for: automated diagnosis, treatment recommendations, and semantic queries

Common Issues and Solutions

1. Reasoning Errors

Problem: Ontology becomes inconsistent Solution:

  • Check for contradictory statements
  • Use Window → Views → Explanation to see why

2. Performance Issues

Problem: Slow reasoning with large ontologies Solution:

  • Increase Java heap size: -Xmx4G
  • Use simpler reasoners for development
  • Break large ontologies into modules

3. Import Problems

Problem: Cannot import external ontologies Solution:

  • Check internet connection for web imports
  • Verify file paths for local imports
  • Ensure proper file formats (.owl, .rdf, .ttl)

Next Steps: Plant Disease Diagnosis Mastery

Phase 1: Foundation (Weeks 1-2)

  1. Build Plant Disease Ontology:
    • Create classes: Plant, Disease, Pathogen, Symptom, Treatment
    • Define relationships: hasDisease, causedBy, hasSymptom, treatedWith
    • Add data properties: severity, temperature, humidity
    • Create individuals: specific plants, diseases, and treatments
  2. Basic Reasoning:
    • Enable HermiT reasoner for classification
    • Test consistency with contradictory statements
    • Practice class hierarchy inference

Phase 2: Advanced Modeling (Weeks 3-4)

  1. Master SWRL Rules for Disease Diagnosis:
    • Symptom Rules: hasSymptom(?plant, LeafSpots) ∧ hasSymptom(?plant, Yellowing) → likelyHasDisease(?plant, EarlyBlight)
    • Environmental Rules: growsIn(?plant, ?env) ∧ hasHumidity(?env, High) → isDiseaseRisk(?plant, true)
    • Treatment Rules: hasDisease(?plant, ?disease) ∧ FungalDisease(?disease) → requiresTreatment(?plant, Fungicide)
  2. Complex Class Expressions:
    • SeverelyDiseasedPlant ≡ Plant ⊓ hasDisease some (hasSeverity some xsd:float[≥ 8.0])
    • HighRiskPlant ≡ Plant ⊓ growsIn some HighHumidityEnvironment

Phase 3: Integration & Automation (Weeks 5-6)

  1. Python-Ontology Integration:
    • Load ontologies with OWLready2
    • Automate individual creation from sensor data
    • Query disease patterns with SPARQL
    • Build diagnostic decision trees
  2. External Ontology Integration:
    • Import Plant Ontology (PO) for anatomy terms
    • Use Environment Ontology (ENVO) for conditions
    • Integrate ChEBI for chemical treatments

Phase 4: AI-Driven Diagnosis (Weeks 7-8)

  1. LLM Integration:
    • Generate structured data with Pydantic models
    • Extract symptoms from text descriptions
    • Map observations to ontology concepts
    • Validate diagnoses against ontological constraints
  2. Multimodal Fusion:
    • Process plant images for visual symptoms
    • Combine sensor data (temperature, humidity)
    • Integrate text reports from farmers
    • Reason across multiple data sources

Phase 5: Production System (Weeks 9-12)

  1. MOE Architecture:
    • Create specialized experts for different plant types
    • Route queries based on ontological plant classification
    • Ensemble predictions from multiple diagnostic models
  2. Performance & Scalability:
    • Optimize reasoning for real-time diagnosis
    • Handle large-scale farm data
    • Deploy with GraphDB or Apache Jena

Specialized Learning Tracks

For Agricultural Technicians

  • Focus on practical symptom identification
  • Emphasize treatment recommendation systems
  • Build seasonal disease prediction models

For AI Developers

  • Master semantic reasoning algorithms
  • Develop uncertainty handling mechanisms
  • Create explanation systems for diagnoses

For Research Scientists

  • Explore novel disease pattern discovery
  • Integrate genomic data with phenotypic observations
  • Develop predictive models for disease emergence

Hands-on Projects

  1. Tomato Disease Expert System: Complete diagnostic system for tomato diseases
  2. Multi-Crop Disease Monitor: Scalable system for various crop types
  3. Climate-Disease Predictor: Seasonal disease risk assessment
  4. Mobile Diagnostic App: Farmer-friendly plant disease identification

Validation Criteria

  • Technical: Ontology passes consistency checks
  • Semantic: Diagnostic rules match expert knowledge
  • Practical: System achieves >85% diagnostic accuracy
  • Usable: Interface accessible to non-technical users

Additional Resources

Protégé & Ontology Development

Plant Disease & Agricultural Ontologies

Technical Integration Resources

AI & Machine Learning Integration

Plant Disease Diagnosis Datasets

Completing AGROVOC Integration: Wheat Disease Individuals

AGROVOC Wheat Disease Instances with FAO Codes

Add these specific wheat disease individuals to your ontology in Protégé:

# AGROVOC Wheat Disease Individuals with Multilingual Labels

# Wheat Rust Diseases
Individual: wheat_leaf_rust_puccinia_triticina
    Types: WheatRust, FungalDisease, AGROVOC_Disease
    Facts: 
        fao_agrovoc_code "c_25421"
        rdfs:label "Wheat leaf rust"@en,
                   "Rouille brune du blé"@fr,
                   "Roya de la hoja del trigo"@es,
                   "Rost listowy pszenicy"@pl
        affects_wheat_variety CommonWheatHost, DurumWheatHost
        endemic_to_region "Temperate agricultural regions globally"
        has_pathogen_agent puccinia_triticina
        optimal_temperature_range "15-22°C"
        resistance_gene "Lr1, Lr2a, Lr3, Lr9, Lr19, Lr21"

Individual: wheat_stem_rust_puccinia_graminis
    Types: WheatRust, FungalDisease, AGROVOC_Disease  
    Facts:
        fao_agrovoc_code "c_25422"
        rdfs:label "Wheat stem rust"@en,
                   "Rouille noire du blé"@fr,
                   "Roya del tallo del trigo"@es,
                   "Rost źdźbłowy pszenicy"@pl
        affects_wheat_variety CommonWheatHost, DurumWheatHost, WinterWheatHost
        endemic_to_region "Sub-Saharan Africa, Central Asia, North America"
        has_pathogen_agent puccinia_graminis_tritici
        optimal_temperature_range "18-25°C"
        resistance_gene "Sr2, Sr6, Sr13, Sr25, Sr31, Sr36"

Individual: wheat_stripe_rust_puccinia_striiformis
    Types: WheatRust, FungalDisease, AGROVOC_Disease
    Facts:
        fao_agrovoc_code "c_25423" 
        rdfs:label "Wheat stripe rust"@en,
                   "Rouille jaune du blé"@fr,
                   "Roya amarilla del trigo"@es,
                   "Rost żółty pszenicy"@pl
        affects_wheat_variety CommonWheatHost, WinterWheatHost
        endemic_to_region "Cool temperate wheat growing regions"
        has_pathogen_agent puccinia_striiformis_tritici
        optimal_temperature_range "10-15°C"
        resistance_gene "Yr1, Yr5, Yr10, Yr15, Yr18, Yr27"

# Wheat Smut Diseases  
Individual: wheat_common_bunt_tilletia_caries
    Types: WheatSmut, FungalDisease, AGROVOC_Disease
    Facts:
        fao_agrovoc_code "c_7849"
        rdfs:label "Common bunt of wheat"@en,
                   "Carie commune du blé"@fr, 
                   "Carbón común del trigo"@es,
                   "Śnieć zwyczajna pszenicy"@pl
        affects_wheat_variety CommonWheatHost, WinterWheatHost
        endemic_to_region "Continental climate wheat regions"
        has_pathogen_agent tilletia_caries
        optimal_temperature_range "5-10°C"
        resistance_gene "Bt1, Bt2, Bt3, Bt8, Bt9, Bt10"

Individual: wheat_loose_smut_ustilago_tritici
    Types: WheatSmut, FungalDisease, AGROVOC_Disease
    Facts:
        fao_agrovoc_code "c_7850"
        rdfs:label "Loose smut of wheat"@en,
                   "Charbon nu du blé"@fr,
                   "Carbón desnudo del trigo"@es,
                   "Śnieć gładka pszenicy"@pl
        affects_wheat_variety CommonWheatHost, DurumWheatHost
        endemic_to_region "Temperate wheat production areas"
        has_pathogen_agent ustilago_tritici
        optimal_temperature_range "16-22°C"
        resistance_gene "Ut1, Ut2, Ut3, Ut5, Ut6"

# Fusarium Head Blight Complex
Individual: wheat_fusarium_head_blight_fusarium_graminearum
    Types: FusariumHeadBlight, FungalDisease, AGROVOC_Disease
    Facts:
        fao_agrovoc_code "c_3156"
        rdfs:label "Fusarium head blight"@en,
                   "Fusariose de l'épi"@fr,
                   "Fusariosis de la espiga"@es,
                   "Fuzarioza kłosa"@pl
        affects_wheat_variety CommonWheatHost, DurumWheatHost, SpringWheatHost
        endemic_to_region "Humid wheat growing regions worldwide"
        has_pathogen_agent fusarium_graminearum
        optimal_temperature_range "24-28°C"
        resistance_gene "Fhb1, Fhb2, Fhb4, Fhb5, Qfhs.ndsu-3BS"
        produces_mycotoxin "Deoxynivalenol (DON), Nivalenol, Zearalenone"

# Wheat Bacterial Diseases
Individual: wheat_bacterial_leaf_streak_xanthomonas_translucens
    Types: WheatBacterialDisease, BacterialDisease, AGROVOC_Disease
    Facts:
        fao_agrovoc_code "c_1121"
        rdfs:label "Bacterial leaf streak of wheat"@en,
                   "Strie bactérienne du blé"@fr,
                   "Estriado bacteriano del trigo"@es,
                   "Bakteryjna smugowatość liści pszenicy"@pl
        affects_wheat_variety CommonWheatHost, DurumWheatHost
        endemic_to_region "Tropical and subtropical wheat regions"
        has_pathogen_agent xanthomonas_translucens_undulosa
        optimal_temperature_range "25-30°C"
        resistance_gene "Xts1, Xts2, Xts3"

# Wheat Viral Diseases
Individual: wheat_yellow_dwarf_barley_yellow_dwarf_virus
    Types: WheatViralDisease, ViralDisease, AGROVOC_Disease
    Facts:
        fao_agrovoc_code "c_1188"
        rdfs:label "Wheat yellow dwarf"@en,
                   "Nanisme jaune du blé"@fr,
                   "Enanismo amarillo del trigo"@es,
                   "Żółta karłowatość pszenicy"@pl
        affects_wheat_variety CommonWheatHost, WinterWheatHost, SpringWheatHost
        endemic_to_region "Worldwide temperate cereal regions"
        has_pathogen_agent barley_yellow_dwarf_virus
        optimal_temperature_range "18-25°C"
        transmitted_by aphid_vector
        resistance_gene "Yd1, Yd2, Yd3, Ydx"

Advanced SWRL Rules for AGROVOC Integration

# Geographic Disease Risk Assessment using AGROVOC
WheatRust(?rust) ∧ endemic_to_region(?rust, ?region) ∧ 
optimal_temperature_range(?rust, ?temp_range) ∧
Farm(?farm) ∧ located_in(?farm, ?region) ∧
current_temperature(?farm, ?temp) ∧
within_range(?temp, ?temp_range) 
→ high_disease_risk(?farm, ?rust)

# Resistance Gene Effectiveness 
Plant(?plant) ∧ carries_gene(?plant, ?gene) ∧
Disease(?disease) ∧ resistance_gene(?disease, ?gene) ∧
affects_wheat_variety(?disease, ?variety) ∧
rdf:type(?plant, ?variety)
→ resistant_to(?plant, ?disease)

# Multilingual Symptom Matching
Disease(?disease) ∧ rdfs:label(?disease, ?label) ∧
observed_symptom(?observation, ?symptom_text) ∧
language_match(?symptom_text, ?label)
→ potential_diagnosis(?observation, ?disease)

# Mycotoxin Risk Assessment
FusariumHeadBlight(?fhb) ∧ produces_mycotoxin(?fhb, ?toxin) ∧
Plant(?plant) ∧ infected_by(?plant, ?fhb) ∧
Harvest(?harvest) ∧ harvests(?harvest, ?plant)
→ contaminated_with(?harvest, ?toxin)

# Seasonal Disease Prediction  
Disease(?disease) ∧ optimal_temperature_range(?disease, ?range) ∧
Season(?season) ∧ typical_temperature(?season, ?temp) ∧
within_range(?temp, ?range) ∧ Region(?region) ∧
endemic_to_region(?disease, ?region)
→ seasonal_risk(?region, ?disease, ?season)

# Vector-Transmitted Disease Warning
ViralDisease(?virus) ∧ transmitted_by(?virus, ?vector) ∧
Farm(?farm) ∧ vector_population(?farm, ?vector, ?population) ∧
threshold_exceeded(?population, high)
→ vector_transmission_risk(?farm, ?virus)

# Integrated Management Recommendation
Plant(?plant) ∧ infected_by(?plant, ?disease) ∧ 
resistance_gene(?disease, ?gene) ∧ NOT carries_gene(?plant, ?gene) ∧
Treatment(?treatment) ∧ effective_against(?treatment, ?disease)
→ recommend_treatment(?plant, ?treatment)

# Economic Threshold Analysis  
Disease(?disease) ∧ Farm(?farm) ∧ disease_incidence(?farm, ?disease, ?incidence) ∧
economic_threshold(?disease, ?threshold) ∧ 
exceeds(?incidence, ?threshold) ∧ Treatment(?treatment) ∧
cost_effective(?treatment, ?disease)
→ urgent_intervention(?farm, ?treatment)

AGROVOC Data Properties for Enhanced Metadata

# AGROVOC-Specific Data Properties
DataProperty: fao_agrovoc_code
    Domain: AGROVOC_Disease
    Range: xsd:string
    Characteristics: Functional
    
DataProperty: multilingual_synonym  
    Domain: AGROVOC_Disease
    Range: rdf:langString
    
DataProperty: agrovoc_definition
    Domain: AGROVOC_Disease  
    Range: rdf:langString
    
DataProperty: fao_publication_reference
    Domain: AGROVOC_Disease
    Range: xsd:anyURI
    
DataProperty: agrovoc_broader_concept
    Domain: AGROVOC_Disease
    Range: xsd:string
    
DataProperty: agrovoc_narrower_concept  
    Domain: AGROVOC_Disease
    Range: xsd:string
    
DataProperty: agrovoc_related_concept
    Domain: AGROVOC_Disease
    Range: xsd:string
    
# Geographic and Climate Metadata
DataProperty: fao_climate_zone
    Domain: AGROVOC_Disease
    Range: xsd:string
    
DataProperty: fao_agroecological_zone  
    Domain: AGROVOC_Disease
    Range: xsd:string
    
DataProperty: global_distribution_map
    Domain: AGROVOC_Disease
    Range: xsd:anyURI

Complete Integration Test

Test your integrated ontology with this SPARQL query:

PREFIX agrovoc: <http://aims.fao.org/aos/agrovoc/>
PREFIX ex: <http://example.org/plant_disease#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?disease ?label_en ?label_fr ?fao_code ?region ?gene
WHERE {
    ?disease rdf:type ex:AGROVOC_Disease .
    ?disease rdfs:label ?label_en .
    FILTER(lang(?label_en) = "en")
    
    OPTIONAL { 
        ?disease rdfs:label ?label_fr .
        FILTER(lang(?label_fr) = "fr")
    }
    
    OPTIONAL { ?disease ex:fao_agrovoc_code ?fao_code }
    OPTIONAL { ?disease ex:endemic_to_region ?region }  
    OPTIONAL { ?disease ex:resistance_gene ?gene }
}
ORDER BY ?label_en

This completes the comprehensive AGROVOC integration, adding FAO agricultural standards and multilingual terminology to your plant disease diagnosis ontology. The system now supports:

  • Multilingual disease identification (English, French, Spanish, Polish)
  • FAO standard codes for international interoperability
  • Geographic distribution modeling with climate zones
  • Resistance gene tracking for breeding programs
  • Economic threshold analysis for farm management
  • Vector transmission modeling for viral diseases
  • Mycotoxin risk assessment for food safety

Complete Implementation Examples

Python Integration with All Ontologies

LLM Integration with Pydantic Models

This completes the comprehensive code examples integrating all four ontologies (PPIO, CropPest, Plant Ontology, AGROVOC) with modern AI/LLM capabilities. The system provides:

  1. Complete ontology management with all integrated standards
  2. Multilingual support using AGROVOC terminology
  3. LLM-guided symptom extraction with structured output
  4. Ontology-constrained reasoning for accurate diagnosis
  5. Pydantic models for type-safe data handling
  6. Production-ready architecture for real-world deployment

Ready to build the future of AI-driven plant disease diagnosis? Start with Phase 1 and work through our structured learning path!