code: def visit_slot(self, slot_name: str, slot: SlotDefinition) -> None:
          
          # Note: We use the raw name in OWL and add a subProperty arc
          slot_uri = self.prop_uri(slot.name)
  
          # Parent slots
          if slot.is_a:
              self.graph.add((slot_uri, RDFS.subPropertyOf, self.prop_uri(slot.is_a)))
          for mixin in slot.mixins:
              self.graph.add((slot_uri, RDFS.subPropertyOf, self.prop_uri(mixin)))
  
          # Slot range
          if not slot.range or slot.range in builtin_names:
              self.graph.add((slot_uri, RDF.type,
                              OWL.DatatypeProperty if slot.object_property else OWL.AnnotationProperty))
              self.graph.add((slot_uri, RDFS.range, URIRef(builtin_uri(slot.range, expand=True))))
          elif slot.range in self.schema.types:
              self.graph.add((slot_uri, RDF.type,
                              OWL.DatatypeProperty if slot.object_property else OWL.AnnotationProperty))
              self.graph.add((slot_uri, RDFS.range, self.type_uri(slot.range)))
          else:
              self.graph.add((slot_uri, RDF.type, OWL.ObjectProperty if slot.object_property else OWL.AnnotationProperty))
              self.graph.add((slot_uri, RDFS.range, self.class_uri(slot.range)))
  
          # Slot domain
          if slot.domain:
              self.graph.add((slot_uri, RDFS.domain, self.class_uri(slot.domain)))
  
          # Annotations
          self.graph.add((slot_uri, RDFS.label, Literal(slot.name)))
          if slot.description:
              self.graph.add((slot_uri, OBO.IAO_0000115, Literal(slot.description)))
docs: Add a slot definition per slot
  
          @param slot_name:
          @param slot:
          @return: