classDiagram
class Plant {
+scientificName: string
+commonName: string
+variety: string
}
class Disease {
+name: string
+scientificName: string
+severity: float
+symptoms: string
}
class Pathogen {
+scientificName: string
+type: enum
+description: string
}
class Symptom {
+name: string
+location: string
+severity: float
}
class Treatment {
+name: string
+type: enum
+effectiveness: float
+application: string
}
Plant "1" -- "many" Disease : hasDisease
Disease "1" -- "1..*" Pathogen : causedBy
Disease "1" -- "1..*" Symptom : hasSymptom
Disease "1" -- "0..*" Treatment : treatedWith
2. Building a Comprehensive Plant Disease Ontology
Integrating PPIO, CropPest, and Plant Ontology for advanced diagnosis
Note
Ontology References:
- PPIO: Models host-pathogen relationships and resistance mechanisms
- CropPest v2: Comprehensive crop-pest management including insects, diseases, and IPM
- Plant Ontology (PO): Standardized plant anatomy and development stages
- AGROVOC: Multilingual agricultural thesaurus with wheat disease terminology
Building a Plant Disease Ontology
Integrated Plant Disease Ontology Structure
Our comprehensive ontology integrates multiple standards:
- PPIO Core: Host-pathogen interactions and resistance
- CropPest v2: Pest management and economic thresholds
- Plant Ontology: Anatomical precision
- AGROVOC: Multilingual support and FAO standards
Step 1: Define Plant Hierarchy with PO Integration
# Plant Taxonomy
Thing
└── Plant
├── CropPlant
│ ├── Tomato
│ ├── Wheat
│ └── Potato
└── OrnamentalPlant
├── Rose
└── Orchid
Step 2: Disease Classification with PPIO and AGROVOC
# Disease Taxonomy
Thing
└── Disease
├── FungalDisease
│ ├── PowderyMildew
│ ├── Rust
│ └── Blight
├── BacterialDisease
│ ├── BacterialSpot
│ └── BacterialWilt
└── ViralDisease
├── MosaicVirus
└── LeafCurlVirus
Step 3: Property Definitions with Cross-Ontology Integration
Object Properties
| Property | Domain | Range | Description |
|---|---|---|---|
| affects | Pathogen | Plant | Pathogen affects plant |
| causes | Pathogen | Disease | Pathogen causes disease |
| manifestsIn | Disease | Plant | Disease appears in plant |
| hasSymptom | Disease | Symptom | Disease presents symptom |
| treatedWith | Disease | Treatment | Disease can be treated with |
Data Properties
| Property | Domain | Range | Description |
|---|---|---|---|
| scientificName | Plant/Pathogen | string | Scientific name |
| severity | Disease | float | 1-10 severity scale |
| optimalTemp | Pathogen | float | Optimal temperature |
| humidityRange | Pathogen | string | Preferred humidity range |
| resistanceGene | Plant | string | Known resistance genes |
Practical Example: Wheat Rust with AGROVOC Integration
# AGROVOC Wheat Rust Example
:WheatStemRust a :FungalDisease, :AGROVOC_Disease ;
rdfs:label "Wheat stem rust"@en,
"Rouille noire du blé"@fr,
"Roya del tallo del trigo"@es ;
:fao_agrovoc_code "c_25422" ;
:scientificName "Puccinia graminis f. sp. tritici" ;
:severity 8.5 ;
:hasSymptom :OrangePustules, :StemLesions ;
:treatedWith :FungicideApplication ;
:resistance_gene "Sr2", "Sr6", "Sr13" ;
:optimal_temperature "18-25°C" ;
:endemic_to_region "Sub-Saharan Africa, Central Asia, North America" .
:WheatStemRust a :FungalDisease ;
rdfs:label "Wheat Stem Rust" ;
:scientificName "Puccinia graminis f. sp. tritici" ;
:severity 8.5 ;
:hasSymptom :OrangePustules, :StemLesions ;
:treatedWith :FungicideApplication ;
:preventedBy :CropRotation .
:OrangePustules a :Symptom ;
rdfs:label "Orange Pustules" ;
:appearsOn "Stems and leaves" ;
:severity 7.0 .
Hands-on Exercise: Building a Crop-Specific Disease Ontology
- Setup
Create a new ontology for your chosen crop (e.g., Tomato, Wheat)
Import necessary ontologies:
http://purl.obolibrary.org/obo/po.owl http://purl.obolibrary.org/obo/ppo.owl http://aims.fao.org/aos/agrovoc/agrovoc_2023-12-11_core.owl
- Define Disease Classes
- Create 3 disease classes with AGROVOC mappings
- Add multilingual labels using AGROVOC terms
- Define severity scales and economic impact
- Add Anatomical Specificity
- Use Plant Ontology terms for symptom locations
- Define which plant parts are affected
- Add developmental stage information
- Create Treatment Strategies
- Define IPM strategies from CropPest
- Include chemical and biological controls
- Add application methods and timing
- Validate
- Run consistency checks
- Test SPARQL queries for disease diagnosis
- Export for use with Python/LLM integration
Next Steps: Advanced Reasoning for Diagnosis
In the next section, we’ll implement:
- SWRL rules for automated disease diagnosis
- SPARQL queries for knowledge extraction
- Integration with environmental data
- Reasoning over temporal disease progression
This will enable our ontology to power intelligent diagnosis systems that can integrate with LLMs and MOE architectures.