Implementación de razonamiento sobre el grafo de conocimiento
1. Inferencia jerárquica (Tigre es un Animal):
Si el Tigre es un Mamífero, y el Mamífero es un Animal, entonces el sistema infiere que el Tigre también es
un Animal.
def es_un(clase_hijo, clase_padre, relaciones):
if (clase_hijo, 'es_un') in relaciones:
actual = relaciones[(clase_hijo, 'es_un')]
if actual == clase_padre:
return True
else:
return es_un(actual, clase_padre, relaciones)
return False
relaciones = {
('Tigre', 'es_un'): 'Mamífero',
('Mamífero', 'es_un'): 'Animal'
}
print(es_un('Tigre', 'Animal', relaciones)) # Resultado: True
2. Herencia de característica (Pingüino tiene plumas):
Si el Pingüino es un Ave, y las Aves tienen plumas, entonces el Pingüino también tiene plumas.
def hereda_caracteristica(animal, caracteristica, grafo):
clase = grafo.get((animal, 'es_un'))
if clase:
return grafo.get((clase, 'tiene')) == caracteristica
return False
grafo = {
('Pingüino', 'es_un'): 'Ave',
('Ave', 'tiene'): 'plumas'
}
print(hereda_caracteristica('Pingüino', 'plumas', grafo)) # Resultado: True
3. Clasificación por dieta (León es carnívoro):
Si el León se alimenta de carne, el sistema lo clasifica automáticamente como Carnívoro.
def clasificar_por_dieta(animal, dieta, grafo):
if grafo.get((animal, 'se_alimenta_de')) == 'carne':
return 'Carnívoro'
elif dieta == 'plantas':
return 'Herbívoro'
else:
return 'Otro'
grafo = {
('León', 'se_alimenta_de'): 'carne'
}
print(clasificar_por_dieta('León', 'carne', grafo)) # Resultado: Carnívoro