Classroom -> https://classroom.google.com/c/NTMzOTkwNjc5MDBa
07/03/2021
Aulas 1.1, 1.2, 1.3, 1.4 e 1.5
Dado, Informação, Conhecimento
Ontologias: representação gráfica como um grafo (nós e arestas) para humano, representação formal em triplas (sujeito, predicado, objeto) para computadores (formato RDF)
Extensível, principalmente devido a restrição de equivalência.
Eficiente para Recuperação da Informação
Interoperabilidade
Capacidade de Inferência: A máquina é capaz de fazer inferências com base nos conceitos,
relacionamentos e restrições, definidos pelos humanos.
Representam Conceitos que diferem-se entre classes e instâncias. Classes e relacionamentos formam os metadados que explicam as instâncias. Tipos de Relacionamento: is-a (rdf:type), part-of, attribute-of, has-a e Funcional.
Opcionalmente, podem conter Axiomas, ou seja, restrições e regras que podem ser aplicados para manter a consistência dos dados. Tipos de Axiomas (restrições em rdfs e owl)
- Restrição Hierárquica: rdfs:subClassOf. Classes filhas herdam as propriedades da Classe Pai.
- Restrição por Relacionamento: rdfs:range, rdfs:domain. Relacionamentos, também chamados de propriedades, possuem limites claros para o tipo de conceito que conectam.
- Restrição por Cardinalidade: owl:cardinality, owl:maxCardinality, owl:minCardinality
- Simetria de Relacionamentos: owl:SymmetricProperty Se A EhCasado com B então B eHCasado com A
- Transitividade de Relacionamentos: owl:TransitiveProperty Se A estaLocalizadoEm B e B estaLocalizadEm C então A estaLocalizadoEm C
- Inversão: owl:inverseOf. Relacionamento ehPai é o inverso de ehFilho
- Equivalência: owl:equivalentClass, owl:equivalentProperty, owl:sameAs
- Disjunção: owl:disjointWith, owl:propertyDisjointWith
Processo de Desenvolvimento de uma Ontologia = {C, R, I, A}, Metodologia 101
- Determinar Escopo/Domínio
- Considerar Reuso (Ontologias conhecidas que já tratam do Domínio)
- Enumerar Termos
- Definir Classes - C
- Definir Propriedades - R
- Definir Restrições - A
- Criar Instâncias - I
08/03/2021
Aulas 2.1, 2.2 e 2.3
Internet, WWW, HTTP, URL, Web Semântica
Dados Abertos: Governo e Ciência
Licenciamento para liberação de dados -> https://creativecommons.org/choose/
Sistema de 5 estrelas para classificação de dados abertos
5 estrelas: Linked Open Data (LOD)
Linked Open Cloud -> https://lod-cloud.net/
Problema da Ambiguidade dos termos na busca (falta semântica, ontologias podem auxiliar)
Dados Governamentais Brasileiros estão no nível 3 estrelas, sem uso de Ontologias
Aulas 3.1, 3.2, 3.3 e 3.4
Pilha de protocolos da Web Semântica
Toda classe, relacionamento e instância de uma ontologia passa a ter um endereço único, chamado de URI (Unified Resource Identifier). Namespace, site onde uma ontologia está hospedada, pode ser representado por um prefixo como por exemplo
prefixo lig948d : http://www.poslin.letras.ufmg.br/lig948d#
lig948d:Pessoa
lig948d:ouve
lig948d:Música
RDF (Resource Description Framework) .... <s,p,o> triplas
prefixo rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
prefixo owl: http://www.w3.org/2002/07/owl#
<sujeito é uma classe> rdf:type owl:Class
<sujeito é um predicado> rdf:type owl:ObjectProperty
RDF-S (Resource Description Framework Schema) é uma ontologia com conceitos básicos para criação de ontologias na Web Semântica
rdfs:label Utilizado para definir o termo de um novo conceito
rdfs:comment Utilizado para definir um cometário sobre um novo conceito
rdfs:subClassOf Utilizado para definir a superclasse de um novo conceito
rdfs:domain Utilizado para definir o domain de um novo relacionamento
rdfs:range Utilizado para definir o range de um novo relacionamento
OWL (Web Ontology Language) é uma ontologia com conceitos básicos para criação de ontologias na Web Semântica
owl:Ontology Utilizado para definir uma ontologia
owl:Class Utilizado para definir uma classe
owl:ObjectProperty Utilizado para definir relacionamentos de objetos
owl:DataProperty Utilizado para definir relacionamentos de dados
owl:NamedIndividual Utilizado para definir uma instância
Se predicado do tipo owl:ObjectProperty então sujeito e objeto são URI de instância de alguma Classe mas se predicado do tipo owl:DataProperty o sujeito é URI de instância de uma Classe mas o objeto é um Literal. Os tipos primitivos que um Literal pode assumir são representados na XML Schema (xsd)
Formatos para serialização de ontologias: RDF/XML, RDFa, N-Triples, JSON-LD, Turtle
Turtle
- Arquivos possuem extensão .ttl
- Todo comando deve terminar com ponto final (.)
- URIs inteiras são sempre representadas entre <>
- Triplas de um mesmo sujeito podem ser agrupadas utilizando ;
- Sujeitos com mais de um valor de objeto para um predicado podem ser agrupadas utilizando ,
Aulas 4.1, 4.2, 4.3
Protégé
Entities -> Classes, Object Properties, Data Properties, Individuals, Datatypes
Asserted x Infered
OWL Viz
09/03/2021
Aulas 5.1, 5.2, 5.3, 5.4, 5.5
Reasoners: HermiT (padrão e instalado com o Protégé), Pellet, Fact++
Usos:
(1) Validação dos Dados: Checa se as instâncias criadas estão de acordo com as classes,
relacionamentos e axiomas definidos.
Homem Disjunto de Mulher
Start Reasoner
Syncronize Reasoner (outra forma de rodar o reasoner depois do Start), abre a tela com as inconsistências e as instâncias inconsistentes apresentam a cor Vermelha.
Pessoa tem_mae exactly 1 Mulher ............ é criada uma subClasse para essa cardinalidade?
Pessoa tem_mae exactly 1 Homem
Fulano Disjunto de Ciclano ............ disjunção de instância para que o reasoner não infira que Fulano e Ciclano são a mesma pessoa
Fulana Disjunta de Ciclana
(2) Inferência de Dados: Novas instâncias e novos relacionamentos são criados com base nos
axiomas definidos.
Fulana é do tipo Pessoa e Ciclano temMãe Fulana logo Fulana é uma Mulher
João ehConjuge Joana e ehConjuge é Simétrica logo Joana ehConjuge João
Cidade é do tipo Lugar e Estado é do tipo Lugar e País é do tipo LugarLugar estaEm Lugar e estaEm é Transitiva
Se Cidade estaEm Estado e Estado estaEm País logo Cidade estaEm País
Pessoa é do tipo Classe e é equivalente a dbo:Person
É possível importar uma ontologia, parte dela ou somente referenciar um conceito dessa Onto pelo URI
temFilho é o inverso de temMae e de temPaiFulana temFilho Beltrano e Fulana é Mulher logo Beltrano temMae Fulana
Ciclano temFilho Beltrano e Ciclano é Homem logo Beltrano temPai Ciclano
Propriedades não utilizadas por Reasoners podem ser definidas através do Annotation Properties (ao invés de Object Properties)
DL Query: buscar instâncias do tipo de uma Classe, buscar instâncias do tipo de um Relacionamento, buscar com operadores lógicos AND, OR e NOT e operadores relacionais como SOME, ONLY, etc ...
Pessoa é equivalente a Nacionalidade e Brasileiro é subClasse de NacionalidadeBrasileiro é uma Pessoa que nasceu no Brasil
Se Fulano nasceu no Brasil logo Fulano é Brasileiro
Aulas 6.1, 6.2,
Ontologia para a Web Semântica: reuso para permitir o compartilhamento.
Reutilização de ClassesOntologias de Domínio Geral
- Wikidata
- DBpedia
- BabelNet: Ontologia multilíngue que relaciona conceitos léxicos e semânticos. Foi criada automaticamente, vinculando a Wikipedia ao léxico computacional mais popular da língua inglesa, o WordNet.
- The Linked Open Data Cloud (LOD): Para fazer parte da LOD, a ontologia deve estar num formato de arquivo conhecido ( (RDFa, RDF/XML, Turtle, N-Triples)), todos suas entidades devem ter uma URI, e deve ter ao menos 50 conexões com ontologias externas. Padrão 5 estrelas.
Ontologias de Anotação (auxiliam a criação de ontologias de domínio)
- General Ontology for Linguistic Description (GOLD): Fornece um conjunto de classes e relacionamentos que podem ser usados na descrição científica de uma língua natural.
- Friend of a Friend (FOAF)
Ontologias de Domínio Específico
- GeoNames
- The Open Biological and Biomedical Ontologies (OBO) Foundry
Aula 7
SPARQL: linguagem de consulta para recuperação de informações com base nas triplas RDF
Sujeitos com mais de um valor de objeto para um predicato podem ser agrupados com ,
EndPoint SPARQL para a Wikidata -> https://query.wikidata.org/
SELECT ?pessoa ?nascimento
WHERE {
?pessoa rdf:type dbo:Person ;
dbo:birthDate ?nascimento .
}
SELECT ?country ?population
WHERE {
?country rdf:type dbo:Country ;
dbo:populationTotal ?population .
FILTER (?population < 1000000 )
}
SELECT ?pessoa ?dataMorte
WHERE {
?pessoa rdf:type dbo:Person .
OPTIONAL { ?pessoa dbo:deathDate ?dataMorte . }
}
SELECT ?pessoa
WHERE {
?pessoa rdf:type dbo:Person .
FILTER(!EXISTS { ?pessoa dbo:deathDate ?dataMorte . })
}
SELECT ?pessoa ?nomeCompleto
WHERE {
?pessoa rdf:type dbo:Person ;
foaf:givenName ?nome ;
foaf:surname ?sobrenome .
BIND(concat(?nome, " ", ?sobrenome) AS ?nomeCompleto)
}
Além de SELECT temos: CONSTRUCT, ASK, DESCRIBE, DELETE e INSERT (não tem UPDATE)
Os comandos AVG/MAX/MIN podem ser utilizados respectivamente para achar a média, número máximo e número mínimo de uma variável numérica, não precisa de GROUP BY.
Pulei Aula 8 sobre servidor Apache Jena Fuseki
11/03/2021
Aula 9 Geração de Língua Natural (GLN). Entrada Ontologia (com instâncias) e saída Texto
Atividades do Linguista em sistemas GLN (RDF-to-text)
- Verbalização: uma tripla pode ter diferentes formas de ser expressa em linguagem natural
- Anotações: os sintagmas nominais são substituídos por representações do referente na entrada não-linguística (SUJEITO-1, OBJETO-1, etc.) e depois os artigos, substantivos, adjetivos e verbos são substituídos pela sua forma raíz.
Aula 10 ChatBot PULEI
Aula 11 RDFLib
import rdflib
#Inicializar o grafo
g = rdflib.Graph()
# Carregar um Ontologia no formato RDF
ontologia = g.parse("area.rdf")
# percorrendo as triplas da ontologia
for (subj, pred, obj) in ontologia:
print(subj, pred, obj)
# número de triplas
print("Número de Triplas: ", len(ontologia))
Definição de URIs, Prefixos, Literais, Inserir triplas no grafo, Remover triplas (usando sujeito ou predicado ou objeto), Recuperar triplas (usando sujeito ou predicado ou objeto) ou via SPARQL
Conteúdo adicional de outra fonte
Nós brancos
- modelar valores estruturados de propriedades mais complexas
Nó branco do tipo Endereço
propriedades: Rua, Número, Complemento, CEP, Bairro, Cidade, Estado, Tipo
Reduzir relacionamentos n-ários a n relacionamentos binários (coleção, reificação)
Representação XML
<rdf:Description rdf:about="{URIRefSujeito}">
<{namespace:predicado1}> Literal </{namespace:predicado1}>
<{namespace:predicado2} rdf:resource="{URIRefObjeto}">
</rdf:Description>
<rdf:Description rdf:nodeID="abc">
<rdfs:type rdf:resource="{namespace geo}/Endreco/">
<geo:CEP rdf:datatype="&xsd;integer"> 20541030 </geo:CEP>
<geo:bairro rdf:datatype="&xsd;string"> Vila Isabel </geo:bairro>
</rdf:Description>
rdf:about não evita duplicatas
rdf:nodeID é formado pela URI base do documento + valor do ref:ID
Coleções RDF: listas ordenadas
rdf:list ... tipo
rdf:first ... primeiro
rdf:rest ... restante
rdf:nil ... vazio (fim da lista)
<rdf:Description rdf:about="{URIRefSujeito}">
<ex:lista rdf:parseType="Collection">
<rdf:Description rdf:about="{URIRefItem1}">
<rdf:Description rdf:about="{URIRefItem2}">
</ex:lista>
</rdf:Description>
Reificação: incluir outras propriedades para a tripla
rdf:Statement
rdf:subject
rdf:predicate
rdf:object
<rdf:Statement rdf:about="{URIRefStatement}">
<rdf:subject rdf:resource="{URIRefSujeito}">
<rdf:predicate rdf:resource="{URIRefPredicado}">
<rdf:object rdf:resource="{URIRefObjeto}">
<ex:nome rdf:datatype="&xsd;string"> Fulano </ex:nome>
</rdf:Statement>
Limitações da RDFS são tratadas pela OWL
Diferenças entre OO e RDF/OWL .... bem interessante
https://slideplayer.com.br/slide/10363870/
Reasoners são usados para verificar a qualidade de dados e para inferir dados
ResponderExcluir