Extending the Plant Disease Ontology

Adding new disease cases in Protégé Desktop

Extending the Plant Disease Ontology

This guide walks you through extending an existing plant disease ontology in Protégé Desktop, using Fusarium Wheat Blast as a practical example.

Prerequisites

  • Protégé Desktop (version 5.5.0 or later)
  • Basic understanding of OWL ontologies
  • The base plant disease ontology file (plant-disease.owl)

Step 1: Open the Ontology

  1. Launch Protégé Desktop
  2. Go to File > Open... and select your plant-disease.owl file
  3. Ensure the “Entities” tab is selected in the main window

Step 2: Add the Pathogen

  1. In the “Classes” tab, navigate to the Pathogen class
  2. Right-click and select Add subclass...
  3. Name it Magnaporthe_oryzae
  4. In the “Annotations” tab, add:
    • rdfs:label: “Magnaporthe oryzae”
    • rdfs:comment: “A plant-pathogenic fungus that causes rice blast and wheat blast diseases”
    • skos:altLabel: “Rice blast fungus”, “Wheat blast fungus”

Step 3: Create the Disease Class

  1. In the “Classes” tab, navigate to the Disease class
  2. Right-click and select Add subclass...
  3. Name it Fusarium_Wheat_Blast
  4. Add annotations:
    • rdfs:label: “Wheat Blast”
    • skos:altLabel: “Brusone”
    • rdfs:comment: “A devastating fungal disease of wheat caused by Magnaporthe oryzae Triticum pathotype”

Step 4: Add Symptoms

  1. In the “Classes” tab, navigate to the Symptom class
  2. For each symptom, right-click and select Add subclass...:
    • Bleached_Spike: “Bleached spike symptoms with white to light gray lesions”
    • Elliptical_Lesions: “Elliptical or diamond-shaped lesions with gray centers”
    • Grain_Abortion: “Partial or complete grain abortion”
    • Leaf_Blast: “Lesions on leaves with dark borders”

Step 5: Define Object Properties

  1. Go to the “Object Properties” tab
  2. Ensure these properties exist (create if missing):
    • causedBy (Domain: Disease, Range: Pathogen)
    • hasSymptom (Domain: Disease, Range: Symptom)
    • affectsPlantPart (Domain: Disease, Range: PlantPart)
    • favoredBy (Domain: Disease, Range: EnvironmentalCondition)
    • managedBy (Domain: Disease, Range: ManagementPractice)
    • treatedWith (Domain: Disease, Range: Pesticide)

Step 6: Add Data Properties

  1. Go to the “Data Properties” tab
  2. Ensure these properties exist (create if missing):
    • scientificName (Range: string)
    • description (Range: string)
    • firstReported (Range: string)
    • occursIn (Range: string)

Step 7: Create Environmental Conditions

  1. In the “Classes” tab, navigate to EnvironmentalCondition
  2. Add a new subclass: Favorable_WheatBlast_Conditions
  3. Add data properties:
    • hasTemperature: “25°C”
    • hasHumidity: “90%”
    • hasRainfall: “10mm/day”

Step 8: Add Management Practices

  1. In the “Classes” tab, navigate to ManagementPractice
  2. Add a new subclass: WheatBlast_Management
  3. Add instances for each practice:
    • “Use of resistant varieties”
    • “Fungicide application at booting stage”
    • “Crop rotation with non-host crops”
    • “Destruction of infected crop residues”

Step 9: Add Chemical Controls

  1. In the “Classes” tab, navigate to Fungicide
  2. Add subclasses:
    • Azoxystrobin (modeOfAction: “QCL”, actionType: “Preventative and curative”)
    • Tebuconazole (modeOfAction: “DMI”, actionType: “Protectant”)

Step 10: Create Relationships

  1. Go to the “Individuals” tab
  2. Select Fusarium_Wheat_Blast
  3. In the “Object Property Assertions” section:
    • Add causedBy: Magnaporthe_oryzae
    • Add hasSymptom: Add all symptom individuals
    • Add affectsPlantPart: Add Spike, Leaf, Grain
    • Add favoredBy: Favorable_WheatBlast_Conditions
    • Add managedBy: WheatBlast_Management
    • Add treatedWith: Azoxystrobin, Tebuconazole

Step 11: Add Geographic Distribution

  1. In the “Classes” tab, navigate to GeographicDistribution
  2. Add a new subclass: WheatBlast_Distribution
  3. Add data properties:
    • occursIn: “South America”, “South Asia”, “Africa”
    • firstReported: “1985”

Step 12: Add References

  1. In the “Classes” tab, navigate to ScientificReference
  2. Add a new individual: WheatBlast_Ref1
  3. Add data properties:
    • title: “Wheat Blast: A New Fungal Inhabitant to Bangladesh Threatening World Wheat Production”
    • authors: “Tofazzal Islam, et al.”
    • year: “2016”
    • journal: “Plant Pathology Journal”

Step 13: Run Reasoner

  1. Go to Reasoner menu
  2. Select HermiT or Pellet reasoner
  3. Click Start reasoner
  4. Check for inconsistencies in Window > Tabs > Ontology views > Ontology metrics

Step 14: Save and Export

  1. Go to File > Save to save in OWL/XML format
  2. Export inferred axioms: File > Export inferred axioms as ontology...
  3. Save as plant-disease-inferred.owl

Best Practices for Ontology Extension

  1. Consistent Naming:
    • Use underscores for multi-word names (e.g., Wheat_Blast)
    • Be consistent with case (prefer CamelCase for classes, camelCase for properties)
  2. Documentation:
    • Always add rdfs:comment for important classes and properties
    • Use rdfs:label for human-readable names
    • Add skos:definition for formal definitions
  3. Version Control:
    • Save major versions with timestamps
    • Document changes in an ontology changelog
    • Use versionIRI for tracking ontology versions

Exercise: Adding Banana Fusarium Wilt TR4

Using the same process, add “Banana Fusarium Wilt TR4” to the ontology with these characteristics:

  1. Pathogen:
    • Class: Fungus
    • Name: Fusarium_odoratissimum_TR4
    • Scientific name: “Fusarium odoratissimum (Fusarium oxysporum f. sp. cubense Tropical Race 4)”
  2. Symptoms:
    • Yellowing of older leaves
    • Wilting and collapse of leaves
    • Reddish-brown vascular discoloration
  3. Management:
    • Use of disease-free planting material
    • Soil disinfection
    • Quarantine measures
  4. Distribution:
    • Southeast Asia
    • Africa
    • Middle East
    • Latin America
  5. References:
    • Include at least one scientific reference with title, authors, and publication details

Troubleshooting

  1. Missing Imports:
    • If a class isn’t found, check Active Ontology > Ontology imports
    • Use Refactor > Rename entity instead of manual renaming
  2. Reasoner Errors:
    • Check for circular definitions
    • Look for conflicting property characteristics
    • Verify domain and range restrictions
  3. Performance Issues:
    • For large ontologies, close unused tabs
    • Use incremental reasoning when possible
    • Consider using a more powerful reasoner like HermiT