Pular para o conteúdo principal

Metadata for RDF Statements: The RDF-star Approach - Youtube

Description

The lack of a convenient way to capture annotations and statements about individual RDF triples has been a long standing issue for RDF. Such annotations are a native feature in other contemporary graph data models (e.g., edge properties in the Property Graph model). In recent years, the RDF* approach has emerged to address this limitation of RDF. After RDF* gained traction among both vendors and users of RDF systems, a community group has formed to produce a specification of the approach, now called RDF-star. In February 2021, the group published a first working draft of this spec, which is accompanied by several test suites. In this presentation we will introduce the approach and the various features that it adds to RDF and SPARQL. 

Palestrantes: Pierre-Antoine Champin & Olaf Hartig

Vídeo ->  https://youtu.be/ZNfq12mdnsM

Slides -> https://w3c.github.io/rdf-star/presentations/RDF-star_Lotico.pdf

Links -> https://w3c.github.io/rdf-star/

Anotações

Cada tripla representa uma declaração sobre uma fato (não só as triplas que ligam Nós, ou seja, que representam arestas do grafo)

RDF-Star permite adicionar metadados a qualquer tripla: statement-level metadata

Exemplo de aninhamento de metadados: 

<< <<#Alice rdf:type :genius >> :source "file.x" >> :creator #Bob

Diferente de 

<<#Alice rdf:type :genius >> :source "file.x"
"file.x" :creator #Bob

Reificação padrão: verbosidade da consulta e a declaração original não consta mais no grafo o que pode prejudicar inferências. Pode introduzir problemas como um statement ter mais de um sujeito ou predicado ou objeto.

Single-Triple Named Graphs:  não tem a semântica definida

Singleton properties: criar uma nova propriedade para usar em uma tripla que faz a declaração (indiretamente pq não é a propriedade original) e essa propriedade é do tipo sp:singletonProperty da propriedade original. Em termos de verbosidade é melhor que a reificação padrão mas não traz a declaração original no grafo.Em termos de semântica é mais precisa que Named Graph pois o significado da propriedade é definido. Mas não escala pq esbarra na premissa de que o número de predicados é bem menor que o número de sujeitos e objetos e isso não acontece pq é necessário criar uma propriedade para cada tripla. 

Questionamento motivador: Pq não usar a própria tripla para incluir os metadados?

Nested triples: podem ser sujeito ou objeto

Consultas SPARQL-Star ficam mais fáceis de ler e construir por seres humanos

Blazegraph: Reification Done Right

Technical Report - Junho/2014

W3C Workshop sobre Padronização de Dados em Grafo em Março de 2019 motivou a criação do grupo de trabalho

Outras especificações sobre RDF da W3C: RDF Semantics, RDF Abstract Syntax, SPARQL e Turtle estão sendo alteradas para adaptar a RDF-Start e SPARQL-Star

Graph ::= Triple*
Triple ::= Subj Pred Obj
Subj ::= IRI | Bnode | Triple
Pred ::= IRI
Obj ::= IRI | Bnode | Literal | Triple
Dataset ::= Graph (IRI Graph)*

Asserted triple X Embedded triple

Turtle-Star

#Alice rdf:type :genius {|:source "file.x"|}
"file.x" :creator #Bob

#Alice rdf:type :genius é uma tripla asserted então temos 3 triplas no arquivo e isso é diferente de 

<<#Alice rdf:type :genius >> :source "file.x"
"file.x" :creator #Bob  

Onde temos somente um tripla aninhada e duas triplas no arquivo. Só se aplicam a triplas no sujeito

Tem também N-triples-star, N-Quads-star e JSON-LD-star

Triplas embutidas, aninhadas, não são automaticamente declarações (statements, asserted)

PG-Mode e SA-mode não existem mais ...

Semantica monotônica, triplas asserted não podem ser canceladas.

#Alice :workingFor #ACME {|:since 2010-12-10; until 2020-12-20;|}

Triplas são únicas, propostas para as ocorrências de triplas se parecem com reificação

SPARQL-Star

SELECT ?allegedGenius ?accordingTo
WHERE {
<<?allegedGenius rdf:type :Genius>> :source ?src1.
<<?allegedGenius rdf:type :Nerd>> :source ?src2.

FILTER ( ?src1 != ?src2 )
?src1 s:creator ?accordingTo .
?src2 s:creator ?accordingTo .
}

SELECT ?allegedGenius
WHERE {
<<?allegedGenius rdf:type :Genius>> :source ?src1 ; :source ?src2 .
FILTER ( ?src1 != ?src2 )
?src1 s:creator ?accordingTo1 .
?src2 s:creator ?accordingTo2 .
FILTER ( ?accordingTo1 != ?accordingTo2 )
}

SELECT ?cartoon ?b
WHERE {
?cartoon :depicts <<?b :dreamingOf <<?a :dreamingOf ?b>> >>
}

SELECT ?cartoon ?y
WHERE {
VALUES ?y { <<:alice :dreamingOf :bob>> <<:alice :dreamingOf :eve>> }
?cartoon :depicts << :bob :dreamingOf ?y >>
}

SELECT ?cartoon ?y ?o
WHERE {
?cartoon :depicts << :bob :dreamingOf ?y >>
FILTER( isTriple(?y) )
BIND( Object(?y) AS ?o )
}

SELECT ?cartoon ?t
WHERE {
?cartoon :depicts << ?x :dreamingOf ?y >>
BIND( TRIPLE(?x,:state,:sleeping) AS ?t )
}

SELECT ?allegedGenius ?type ?src
WHERE {
?allegedGenius rdf:type ?type {| :source ?src |} .
}

Próximos passos SHACL-Star

Star - Kleene star 

Quick Reference

An operation on formal languages that gives for any language L the language L*, defined by {Λ} ∪ LLLLLL ∪ … where Λ is the empty word. Thus a word w is in L* if and only if it has the form w1w2wn with each wi in L, i.e. is a concatenation of words in L.

{Λ} ∪ LLLLLL ∪ …

w1w2wn

The Kleene-plus (L+) of L, is defined by

LLLLLL ∪ … Thus L+ comprises the nonempty strings of L*.

LLLLLL ∪ …

 
Opacidade referencial (não acontece na reificação padrão)
 
:superman owl:samesAs :clark
:superman :can :fly 
-> :clark :can :fly
 
O que está dentro da tripla aninhada << s p o >> não sobre efeito de inferências
 
PG x RDF: semântica é essencial para interoperabilidade ( o uso local exclusivo não requer semântica explícita). Reduzir o gap entre os modelos é atrativo para TripleStores e permitiria executar consultas federadas em bases remotas (com tradução de modelo/linguagem)


Comentários

Postagens mais visitadas deste blog

Aula 12: WordNet | Introdução à Linguagem de Programação Python *** com NLTK

 Fonte -> https://youtu.be/0OCq31jQ9E4 A WordNet do Brasil -> http://www.nilc.icmc.usp.br/wordnetbr/ NLTK  synsets = dada uma palavra acha todos os significados, pode informar a língua e a classe gramatical da palavra (substantivo, verbo, advérbio) from nltk.corpus import wordnet as wn wordnet.synset(xxxxxx).definition() = descrição do significado É possível extrair hipernimia, hiponimia, antonimos e os lemas (diferentes palavras/expressões com o mesmo significado) formando uma REDE LEXICAL. Com isso é possível calcular a distância entre 2 synset dentro do grafo.  Veja trecho de código abaixo: texto = 'útil' print('NOUN:', wordnet.synsets(texto, lang='por', pos=wordnet.NOUN)) texto = 'útil' print('ADJ:', wordnet.synsets(texto, lang='por', pos=wordnet.ADJ)) print(wordnet.synset('handy.s.01').definition()) texto = 'computador' for synset in wn.synsets(texto, lang='por', pos=wn.NOUN):     print('DEF:',s

truth makers AND truth bearers - Palestra Giancarlo no SBBD

Dando uma googada https://iep.utm.edu/truth/ There are two commonly accepted constraints on truth and falsehood:     Every proposition is true or false.         [Law of the Excluded Middle.]     No proposition is both true and false.         [Law of Non-contradiction.] What is the difference between a truth-maker and a truth bearer? Truth-bearers are either true or false; truth-makers are not since, not being representations, they cannot be said to be true, nor can they be said to be false . That's a second difference. Truth-bearers are 'bipolar,' either true or false; truth-makers are 'unipolar': all of them obtain. What are considered truth bearers?   A variety of truth bearers are considered – statements, beliefs, claims, assumptions, hypotheses, propositions, sentences, and utterances . When I speak of a fact . . . I mean the kind of thing that makes a proposition true or false. (Russell, 1972, p. 36.) “Truthmaker theories” hold that in order for any truthbe

DGL-KE : Deep Graph Library (DGL)

Fonte: https://towardsdatascience.com/introduction-to-knowledge-graph-embedding-with-dgl-ke-77ace6fb60ef Amazon recently launched DGL-KE, a software package that simplifies this process with simple command-line scripts. With DGL-KE , users can generate embeddings for very large graphs 2–5x faster than competing techniques. DGL-KE provides users the flexibility to select models used to generate embeddings and optimize performance by configuring hardware, data sampling parameters, and the loss function. To use this package effectively, however, it is important to understand how embeddings work and the optimizations available to compute them. This two-part blog series is designed to provide this information and get you ready to start taking advantage of DGL-KE . Finally, another class of graphs that is especially important for knowledge graphs are multigraphs . These are graphs that can have multiple (directed) edges between the same pair of nodes and can also contain loops. The