Raciocínio de ontologia em gráficos de conhecimento
Um guia prático do Python para entender os princípios de geração de novos conhecimentos seguindo processos lógicos
Figura 1 - Um processo de ponta a ponta ilustrando como as declarações iniciais levam às inferidas por meio do raciocínio de ontologia
Introdução
Rrecursos de easoning são um tópico amplamente discutido no contexto de sistemas de IA. Esses recursos são frequentemente associados a Large Language Models (LLMs), que são particularmente eficazes na extração de padrões aprendidos de uma grande quantidade de dados.
O conhecimento capturado durante esse processo de aprendizagem permite que os LLMs executem várias tarefas de linguagem, como resposta a perguntas e resumo de texto, mostrando habilidades que se assemelham ao raciocínio humano.
Não é útil apenas dizer “LLMs não podem raciocinar”, já que claramente eles fazem algumas coisas para as quais os humanos usariam o raciocínio. - Jeremy Howard |
Co-fundador Fast.AI - Digital Fellow em Stanford
Apesar de sua capacidade de identificar e combinar padrões dentro dos dados, os LLMs mostram limitações em tarefas que exigem raciocínio estruturado e formal, especialmente em campos que exigem processos lógicos rigorosos.
Essas limitações destacam a distinção entre reconhecimento de padrões e raciocínio lógico adequado, uma diferença que os humanos nem sempre discernem.
Qualquer correspondência de padrões suficientemente avançada é indistinguível do raciocínio.— _Vedant Misra Pesquisador de IA na DeepMind (Gemini, Minerva, PALM)_
Além disso, os LLMs carecem de total transparência na forma como chegam às suas conclusões, apresentando desafios para tarefas que exigem caminhos de raciocínio explicáveis.
Considerando as necessidades em domínios críticos, incluindo as áreas jurídica e médica, ferramentas abrangentes e transparentes são essenciais. Por esses motivos, as ontologias podem desempenhar um papel crucial nesse cenário.
As ontologias fornecem uma abordagem estruturada e formalizada para representar o conhecimento por meio de classes, relacionamentos e regras. Eles são capazes de suportar e conduzir de forma transparente tarefas como raciocínio transitivo, simétrico e de subsunção - recursos que os LLMs não são inerentemente projetados para lidar.
Neste artigo, discutiremos como aplicar o raciocínio de ontologia no contexto de Knowledge Graphs (KGs) adotando o modelo Resource Description Framework (RDF) e frameworks como RDF Schema e Web Ontology Language (OWL).
Se você já está familiarizado com esses conceitos e ferramentas, pode pular diretamente para o seguinte artigo que explora o raciocínio de ontologia no Neo4j:
Linguagens e Frameworks de Ontologias
Figura 2 - Foco nas declarações iniciais
Testa seção fornece uma breve visão geral de RDF, RDF Schema e OWL. Para obter uma compreensão prática desses tópicos, projetaremos e construiremos uma pequena ontologia para descrever dados no domínio do filme. Esse esforço estabelecerá as bases para digerir os princípios críticos do raciocínio ontológico.
O Resource Description Framework (RDF) é uma tecnologia central da Web Semântica (SW), originalmente destinada a realizar uma infraestrutura de dados em escala da Web que seja legível por máquina e compreensível.
Para realizar essa visão, o RDF fornece um modelo de dados que expressa informações na forma de triplos (ou instruções), com um sujeito, um predicado e um objeto. Vamos considerar o seguinte exemplo para esclarecer como funciona:
@prefix myo: <http:my_ontology/> .
@prefix DBR: <http:dbpedia.org/resource/> .
dbr:Stanley_Kubrick myo:d irector_of dbr:Eyes_Wide_Shut .
dbr:Stanley_Kubrick myo:married_to dbr:Christiane_Kubrick .
dbr:Stanley_Kubrick myo:influenciou dbr:Katsuhiro_Otomo .
dbr:Stanley_Kubrick myo:birth_date 1928-07-26^^xsd:d ate .
dbr:Katsuhiro_Otomo myo:influenciou dbr:Satoshi_Kon .
Este trecho de RDF define alguns relacionamentos e propriedades de dados relacionados ao cineasta Stanley Kubrick, usando prefixos personalizados para uma ontologia fictícia () e recursos da DBpedia (). A DBpedia é uma base de conhecimento que extrai informações estruturadas da Wikipédia, permitindo que os dados sejam consultados e vinculados em diversos conjuntos de dados.myo dbr
Neste trecho, podemos identificar duas seções principais que incluem prefixos e triplos. Os prefixos são os seguintes:
myo
: representa um namespace personalizado () para definir classes e relacionamentos de nossa ontologia.<http://my_ontology/>
dbr
: refere-se a recursos da DBpedia (), um banco de dados derivado da Wikipedia, onde e outros recursos são definidos.<http://dbpedia.org/resource/>
dbr:Stanley_Kubrick
Como você pode ver neste exemplo, esses recursos são identificados univocamente usando URIs (Uniform Resource Identifiers). Além disso, esses recursos são combinados nos seguintes triplos:
dbr:Stanley_Kubrick myo:director_of dbr:Eyes_Wide_Shut .
: afirma que Stanley Kubrick (definido na DBpedia) é o diretor do filme De Olhos Bem Fechados.dbr:Stanley_Kubrick myo:married_to dbr:Christiane_Kubrick .
: indica que Stanley Kubrick é casado com Christiane Kubrick.dbr:Stanley_Kubrick myo:influenced dbr:Katsuhiro_Otomo .
: denota que Stanley Kubrick influenciou Katsuhiro Otomo.dbr:Stanley_Kubrick myo:birth_date 1928-07-26^^xsd:date .
: define a data de nascimento de Stanley Kubrick como 26 de julho de 1928. O especifica que esse valor literal é do tipo de dados date do XML Schema (XSD), garantindo que os aplicativos o processem como uma data.^^xsd:date
dbr:Katsuhiro_Otomo myo:influenced dbr:Satoshi_Kon .
: especifica que Katsuhiro Otomo influenciou Satoshi Kon.
Dentro desses triplos, podemos identificar dois tipos de propriedades: , , e conectar entidades, e elas são definidas como propriedades de objeto, enquanto conecta uma entidade a um valor literal, e é definida como uma propriedade de dados.myo:director_of
myo:married_to
myo:influenced
myo:birth_date
Ao aproveitar o RDF Schema, podemos adicionar mais informações contextuais que podem ser usadas diretamente para estender o significado de nossos dados.
@prefix myo: <http:my_ontology/> .
@prefix DBR: <http:dbpedia.org/resource/> .
### Definição
de classe myo:P erson rdf:type rdfs:Class .
myo:D irector rdf:tipo rdfs:Classe .
myo:Man rdf:type rdfs:Class .
myo:Mulher rdf:tipo rdfs:Classe .
### Hierarquia de classes
myo:D irector rdfs:subClassOf myo:P erson .
myo:Man rdfs:subClassOf myo:P erson .
myo:Woman rdfs:subClassOf myo:P erson .
Neste trecho de RDF, identificamos um conjunto de triplos para definir classes e outro conjunto para especificar uma hierarquia conectando essas classes. Em nossa ontologia, , , e são subclasses de .myo:Director myo:Man myo:Woman myo:Person
Ao alavancar o OWL, podemos introduzir informações contextuais mais avançadas, fornecendo detalhes sobre a natureza das classes e os relacionamentos especificados por nossa ontologia.
@prefix myo: <http://my_ontology/> .
@prefix dbr: <http://dbpedia.org/resource/> .
### Disjoint Classes
myo:Man owl:disjointWith myo:Woman .
### Object Properties
myo:director_of rdf:type owl:ObjectProperty .
myo:director_of rdfs:domain myo:Director .
myo:director_of rdfs:range myo:Movie .
myo:married_to rdf:type owl:ObjectProperty .
myo:married_to rdf:type owl:SymmetricProperty .
myo:married_to rdfs:domain myo:Person .
myo:married_to rdfs:range myo:Person .
myo:influenced rdf:type owl:ObjectProperty .
myo:influenced rdf:type owl:TransitiveProperty .
myo:influenced rdfs:domain myo:Person .
myo:influenced rdfs:range myo:Person .
### Data Properties
myo:birth_date rdf:type owl:DatatypeProperty .
myo:birth_date rdfs:domain myo:Person .
myo:birth_date rdfs:range xsd:date .
Este trecho de RDF define e como classes disjuntas: nenhum indivíduo pode pertencer simultaneamente a ambos, impondo uma separação clara entre os dois em termos de significado.Man
Woman
Além disso, especifica detalhes relacionados a três propriedades de objeto com características únicas:
myo:director_of
identifica uma propriedade de objeto em que a está associado a umDirector
Movie.
myo:married_to
denota uma propriedade de objeto simétrica entre duas instâncias, especificando a simetria que caracteriza essa relação;Person
myo:influenced
é uma propriedade de objeto transitivo, indicando uma relação de influência em cascata através de instâncias conectadas.Person
Além disso, inclui uma propriedade de dados, , ligando um a um .myo:birth_date
Person
date
Para obter mais detalhes sobre RDF, RDF Schema e OWL, você pode ler o seguinte artigo:
Na seção a seguir, esclareceremos como aplicar princípios de raciocínio para gerar novas declarações que não são explicitamente mencionadas em nossos dados.
Raciocínio sobre dados RDF
Figura 3 — Foco nas declarações inferidas
Agora aplicam o raciocínio de ontologia aos nossos dados de filmes para produzir novos triplos, garantindo que sejam consistentes com os existentes.
Para atingir esse objetivo, usaremos duas bibliotecas Python: rdflib e owlrl. Essas bibliotecas nos permitirão manipular dados RDF, realizar raciocínio usando RDF Schema e regras OWL e executar consultas SPARQL em tais dados RDF. SPARQL (SPARQL Protocol and RDF Query Language) é uma poderosa linguagem de consulta projetada especificamente para recuperar dados armazenados no formato RDF.
No código a seguir, armazenamos a coleção de triplos RDF criados na seção anterior em um objeto e, em seguida, executamos a instrução a seguir para gerar triplos adicionais, enriquecendo nosso gráfico RDF com informações inferidas.rdflib.Graph() DeductiveClosure(OWLRL_Semantics).expand(g)
import rdflib
from owlrl import DeductiveClosure, OWLRL_Semantics
# Step 1: Create an RDF graph and parse the data
g = rdflib.Graph()
g.parse(data=rdf_data, format="turtle")
# Step 2: Apply reasoning using OWL RL rules
DeductiveClosure(OWLRL_Semantics).expand(g)
Como você pode ver no código anterior, owlrl inclui duas classes distintas que são úteis em nosso contexto:
OWLRL_Semantics
é uma classe que fornece o conjunto de regras OWL 2 RL. OWL 2 RL é um subconjunto do OWL 2 projetado para raciocínio escalável em grandes conjuntos de dados.Deductive Clousure
é uma classe que aplica as regras especificadas em para calcular encerramentos dedutivos, construindo novas instruções que seguem logicamente os dados originais.OWLRL_Semantics
Se você estiver interessado nas múltiplas formas de raciocínio que podemos realizar usando máquinas, discuti extensivamente os tópicos de raciocínio dedutivo e indutivo no contexto de KGs no seguinte artigo:
Além disso, o artigo a seguir destaca elementos específicos relacionados às técnicas indutivas aplicadas aos KGs:
Melhorando as incorporações de graficos de conhecimento com redes neurais de grafos
Agora podemos definir consultas SPARQL básicas em nosso gráfico RDF estendido para analisar os resultados alcançados em relação às instruções inferidas.
# Step 3: Define queries to get inferred classes information
# Query to list all inferred classes of Person entities
classes_query = """
PREFIX myo: <http://my_ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
SELECT ?subject ?object
WHERE {
?subject rdf:type ?object .
FILTER(?subject IN (dbr:Stanley_Kubrick, dbr:Katsuhiro_Otomo, dbr:Christiane_Kubrick, dbr:Satoshi_Kon))
}
"""
# Query to find all relationships using the 'myo:influenced' property
influenced_query = """
PREFIX myo: <http://my_ontology/>
SELECT ?subject ?object
WHERE {
?subject myo:influenced ?object .
}
"""
# Query to find all relationships using the 'myo:married_to' property
married_to_query = """
PREFIX myo: <http://my_ontology/>
SELECT ?subject ?object
WHERE {
?subject myo:married_to ?object .
}
"""
Essas consultas são projetadas para recuperar classes e relacionamentos inferidos específicos de nosso conjunto de dados RDF. A lista todas as classes inferidas para entidades (, , e ), mostrando as classes associadas a cada uma dessas entidades.classes_query
Person
Stanley Kubrick
Katsuhiro Otomo
Christiane Kubrick
Satoshi Kon
O recupera todos os pares de instâncias vinculadas pela propriedade, capturando como uma entidade influenciou outra no conjunto de dados. Por fim, identifica todas as relações que usam a propriedade, listando pares de instâncias conectadas por essa relação.influenced_query
myo:influenced
married_to_query
myo:married_to
Aproveitando o rdflib, podemos executar as consultas SPARQL em nossos dados.
# Step 4: Run the queries
# Run the inferred classes query
print("\nInferred classes:")
for row in g.query(classes_query):
print(f"{row.subject} is a {row.object}")
# Run the 'influenced' query
print("\nInferred 'influenced' relationships:")
for row in g.query(influenced_query):
print(f"{row.subject} influenced {row.object}")
# Run the 'married_to' query
print("\nInferred 'married_to' relationships:")
for row in g.query(married_to_query):
print(f"{row.subject} is married to {row.object}")
Aqui está o resultado em que destacamos as declarações implícitas derivadas das regras de ontologia:
Inferred classes:
http://dbpedia.org/resource/Stanley_Kubrick is a http://my_ontology/Director
http://dbpedia.org/resource/Stanley_Kubrick is a http://my_ontology/Man
http://dbpedia.org/resource/Stanley_Kubrick is a http://my_ontology/Person
http://dbpedia.org/resource/Satoshi_Kon is a http://my_ontology/Person
http://dbpedia.org/resource/Christiane_Kubrick is a http://my_ontology/Person
http://dbpedia.org/resource/Katsuhiro_Otomo is a http://my_ontology/Person
Inferred 'influenced' relationships:
http://dbpedia.org/resource/Stanley_Kubrick influenced http://dbpedia.org/resource/Katsuhiro_Otomo
http://dbpedia.org/resource/Katsuhiro_Otomo influenced http://dbpedia.org/resource/Satoshi_Kon
http://dbpedia.org/resource/Stanley_Kubrick influenced http://dbpedia.org/resource/Satoshi_Kon
Inferred 'married_to' relationships:
http://dbpedia.org/resource/Stanley_Kubrick is married to http://dbpedia.org/resource/Christiane_Kubrick
http://dbpedia.org/resource/Christiane_Kubrick is married to http://dbpedia.org/resource/Stanley_Kubrick
Na seção a seguir, discutiremos como essas declarações implícitas foram geradas, para reconstruir o processo lógico (e interpretável).
Classes Inferidas
Agora analisam as novas declarações relacionadas às classes associadas às nossas entidades.
Hierarquia de classes
myo:Director
e são definidos como subclasses de . Isso significa que qualquer indivíduo do tipo ou também é inferido como sendo do tipo Dado que é explicitamente definido como a e , ele é inferido como também um através do raciocínio de subsunção.myo:Man
myo:Person
myo:Director
myo:Man
myo:Person.
dbr:Stanley_Kubrick
myo:Director
myo:Man
myo:Person
Domínio e intervalo de propriedades
A propriedade tem um domínio e um intervalo correspondente a : se um indivíduo é um sujeito ou um objeto dessa propriedade, infere-se que seja do tipo . Como influências e influências , todos os três são inferidos como .myo:influenced
myo:Person
myo:Person
dbr:Stanley_Kubrick
dbr:Katsuhiro_Otomo
dbr:Katsuhiro_Otomo
dbr:Satoshi_Kon
myo:Person
Da mesma forma, tem um domínio e um intervalo correspondentes a , portanto, quem é casado com , é inferido como .myo:married_to
myo:Person
dbr:Christiane_Kubrick
dbr:Stanley_Kubrick
myo:Person
Relacionamentos Inferidos
Agora analisam as novas declarações relacionadas às propriedades existentes que conectam nossas entidades.
Transitividade
A propriedade é definida como transitiva usando OWL. Portanto, uma vez que influencia , e influencia , infere-se que também influencia .myo:influenced
dbr:Stanley_Kubrick
dbr:Katsuhiro_Otomo
dbr:Katsuhiro_Otomo
dbr:Satoshi_Kon
dbr:Stanley_Kubrick
dbr:Satoshi_Kon
Simetria
A propriedade é definida como simétrica usando OWL. Dado que é definido como casado com , é inferido pela simetria que também é casada com .myo:married_to
dbr:Stanley_Kubrick
dbr:Christiane_Kubrick
dbr:Christiane_Kubrick
dbr:Stanley_Kubrick
Conclusões
O raciocínio ontológico fornece uma estrutura poderosa para aprimorar as capacidades dos KGs, preenchendo algumas das lacunas que os LLMs enfrentam no raciocínio estruturado.
Ao adotar RDF, RDF Schema e OWL, podemos permitir inferências lógicas como transitividade, simetria e subsunção, levando à geração automática de conhecimento novo e implícito a partir de dados explicitamente definidos, enriquecendo KGs com conexões logicamente consistentes.
À medida que os sistemas de IA evoluem, a integração do raciocínio ontológico com LLMs pode oferecer soluções mais robustas e transparentes, permitindo que a IA ofereça suporte a decisões complexas baseadas em dados.
A versão completa do código relatado nesta seção está disponível no seguinte bloco de anotações colab: https://colab.research.google.com/drive/1-ad8GY1BDsJoe_-nypwIw2lfER0jrxnI?usp=sharing.
No artigo a seguir, usaremos o Neo4j para aplicar o raciocínio ontológico a um cenário real relacionado à área médica.
Autor: Giuseppe Futia