Pular para o conteúdo principal

Curso Online - Ontologias, Web Semântica, Protegé, RDFLib (python)

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

  1. Determinar Escopo/Domínio
  2. Considerar Reuso (Ontologias conhecidas que já tratam do Domínio)
  3. Enumerar Termos
  4. Definir Classes - C
  5. Definir Propriedades - R
  6. Definir Restrições - A
  7. 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 instâncias> rdf:type <objeto é uma classe>
<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é

Active Ontology -> Header, Metrics Imports, Prefix
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 Lugar
Lugar 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 temPai
Fulana 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 Nacionalidade
Brasileiro é 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 Classes
Para fazer inferências complexas, faça uma importação direta da classe e seus relacionamentos.
Caso contrário, somente adicione a URI da classe reutilizada.
Reutilização de Propriedades
Para fazer inferências complexas, importe o relacionamento como uma propriedade de objetos.
Caso contrário, reutilize-a como uma propriedade de anotação.

Ontologias de Domínio Geral

  1. Wikidata
  2. DBpedia
  3. 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.
  4. 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)

  1. 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.
  2. Friend of a Friend (FOAF)

Ontologias de Domínio Específico

  1. GeoNames
  2. 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 DBPedia -> https://dbpedia.org/sparql
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)

  1. Verbalização: uma tripla pode ter diferentes formas de ser expressa em linguagem natural
  2. 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/




Comentários

Postar um comentário

Sinta-se a vontade para comentar. Críticas construtivas são sempre bem vindas.

Postagens mais visitadas deste blog

Connected Papers: Uma abordagem alternativa para revisão da literatura

Durante um projeto de pesquisa podemos encontrar um artigo que nos identificamos em termos de problema de pesquisa e também de solução. Então surge a vontade de saber como essa área de pesquisa se desenvolveu até chegar a esse ponto ou quais desdobramentos ocorreram a partir dessa solução proposta para identificar o estado da arte nesse tema. Podemos seguir duas abordagens:  realizar uma revisão sistemática usando palavras chaves que melhor caracterizam o tema em bibliotecas digitais de referência para encontrar artigos relacionados ou realizar snowballing ancorado nesse artigo que identificamos previamente, explorando os artigos citados (backward) ou os artigos que o citam (forward)  Mas a ferramenta Connected Papers propõe uma abordagem alternativa para essa busca. O problema inicial é dado um artigo de interesse, precisamos encontrar outros artigos relacionados de "certa forma". Find different methods and approaches to the same subject Track down the state of the art rese...

Knowledge Graph Embedding with Triple Context - Leitura de Abstract

  Jun Shi, Huan Gao, Guilin Qi, and Zhangquan Zhou. 2017. Knowledge Graph Embedding with Triple Context. In Proceedings of the 2017 ACM on Conference on Information and Knowledge Management (CIKM '17). Association for Computing Machinery, New York, NY, USA, 2299–2302. https://doi.org/10.1145/3132847.3133119 ABSTRACT Knowledge graph embedding, which aims to represent entities and relations in vector spaces, has shown outstanding performance on a few knowledge graph completion tasks. Most existing methods are based on the assumption that a knowledge graph is a set of separate triples, ignoring rich graph features, i.e., structural information in the graph. In this paper, we take advantages of structures in knowledge graphs, especially local structures around a triple, which we refer to as triple context. We then propose a Triple-Context-based knowledge Embedding model (TCE). For each triple, two kinds of structure information are considered as its context in the graph; one is the out...

KnOD 2021

Beyond Facts: Online Discourse and Knowledge Graphs A preface to the proceedings of the 1st International Workshop on Knowledge Graphs for Online Discourse Analysis (KnOD 2021, co-located with TheWebConf’21) https://ceur-ws.org/Vol-2877/preface.pdf https://knod2021.wordpress.com/   ABSTRACT Expressing opinions and interacting with others on the Web has led to the production of an abundance of online discourse data, such as claims and viewpoints on controversial topics, their sources and contexts . This data constitutes a valuable source of insights for studies into misinformation spread, bias reinforcement, echo chambers or political agenda setting. While knowledge graphs promise to provide the key to a Web of structured information, they are mainly focused on facts without keeping track of the diversity, connection or temporal evolution of online discourse data. As opposed to facts, claims are inherently more complex. Their interpretation strongly depends on the context and a vari...