Knowledge Graph知识图谱—7. Labeled Property Graphs带标签的属性图

7. Labeled Property Graphs (LPG)

Labeled Property graphs: A combination of property/value stores(NoSQL) and graphs
Definition

7.1 Verbosity of RDF Graphs


7.1.1 RDF Reification

将关系本身作为资源进行建模

7.1.2 RDF Named Graphs


Named Graphs(命名图)是一种在图数据模型中用于组织和标识图数据的方法。它允许在一个大的图中将数据分为不同的图形组件,每个组件都有一个唯一的标识符,通常称为图名或图标签。Named Graphs 主要用于在图数据库和语义网中进行数据建模和查询。

RDF seems particularly bad at representing non-triple information

Choice:

(1) Blow up RDF graph (like DBpedia)

(2) Use non-straightforward representation: Reification or Named Graphs

(3) Other approaches in academia (singleton property, NDFluents, ...): Not very handy either and Little adoption

In any case: Querying gets harder

Motivation for labeled property graphs

Modeling would be much easier if we could simply attach information to edges

Attempt in the Semantic Web Technologies Toolstack: RDF* / SPARQL*

7.2 RDF*

RDF RDF*
Subject URIs or blank nodes URIs, blank nodes, or quoted statements
Predicate URIs URIs
Object URIs, blank nodes, literals URIs, blank nodes, literals, or quoted statements

Quoting triples Example

<<dbr:Dirk_Nowitzki dbo:team dbr:DJK_Wuerzburg>>
dbo:activeYearsStartYear 1994 ;
dbo:activeYearsEndYear 1998 .

The subject of the statement is a triple.

7.2.1 Nesting in RDF*

RDF* statements can be subjects and objects themselves

<<
<<dbr:Dirk_Nowitzki dbo:team dbr:DJK_Wuerzburg>> 
dbo:activeYearsStartYear 1994 ; 
dbo:activeYearsEndYear 1998 .
>>
rdfs:definedBy
<http://dbpedia.org/>

7.2.2 Interpretation of RDF* vs. RDF

In RDF, we cannot make statements about two contradictory statements A and B without the entire graph being contradictory.

In RDF, when we make a statement about a statement S, S is automatically assumed to be true.

7.2.3 RDF*: Quoted vs. Asserted Triples

Quoted triples are not automatically true

If we want to make them true (asserted), we have to do so explicitly.

dbr:Dirk_Nowitzki dbo:team dbr:DJK_Wuerzburg .
<<dbr:Dirk_Nowitzki dbo:team dbr:DJK_Wuerzburg>> 
dbo:activeYearsStartYear 1994 ; 
dbo:activeYearsEndYear 1998 .

# For this, there is a syntactic shortcut:
dbr:Dirk_Nowitzki dbo:team dbr:DJK_Wuerzburg 
{| dbo:activeYearsStartYear 1994 ; 
dbo:activeYearsEndYear 1998 |} .

7.3 SPARQL*: Querying RDF* Graphs

SPARQL*: Just like ordinary SPARQL

Triple patterns can

contain Quoted triples and Triple annotations + a few more builtin functions

7.3.1 SPARQL* Return Types

SPARQL return types: Resource with URI, Blank node, Literal, Number

SPARQL* adds a fifth return type: Triple

7.3.2 Other Query Types with SPARQL*

ASK and DESCRIBE : work as in SPARQL
CONSTRUCT : can also construct RDF*

Not all quoted triples are asserted.

The default graph of SPARQL results is only

asserted triples

SPARQL 查询结果的默认图只包含那些已经被断言的三元组(只有那些在查询中找到匹配并已被显式断言的三元组会出现在默认图中),而引用的三元组可能只是查询中的临时结构或条件,并不一定成为最终结果中的事实。

从第一句:Julia :loves :Peter .是asserted triples,因此返回结果是:Julia

RDF*/SPARQL*: Not (yet) a standard, but lots of tools support RDF* and/or SPARQL*

7.4 RDF* and Inference

7.5 Cypher

Started as a proprietary query language for the graph database system neo4j in 2011

Like SPARQL, Cypher is based on pattern matching.

() denotes a node
[] denotes a relation
()-[]->() denotes a directed path
()-[]-() denotes an undirected path

7.5.1 Simple Query

# Simple query: matching any node
MATCH (n) return n
# Would return all nodes

# Simple query: matching nodes with labels
MATCH (n:Movie) return n
# Would return only movie nodes

7.5.2 Restrictions on Keys

# Simple query: matching any node
MATCH (n:Movie {title: "The Matrix"}) return n
# Would return only the specific movie
# Also possible:
MATCH (n {title: "The Matrix") return n
#Would return any node with a title "The Matrix"

7.5.3 Querying for Node Types

# What kind of node is "The Matrix"?
match(m {title:"The Matrix"}) return labels(m)

7.5.4 Path Expressions



注意,应该是return n, r, e

7.5.5 Querying for Relation Types

# What kind of relation does Hugo Weaving have to the Matrix?
Match
(Movie {title:"The Matrix"})<-[r]-(Person {name:"Hugo Weaving"}) 
return type(r)

7.5.6 Return Types in Cypher

#So far, our return types were nodes or relations. We can also query for specific properties.

match(m:Movie {title: "The Matrix"}) 
return m.released

# return value can also be a property of a relation
# Which role(s) did Hugo Weaving play in The Matrix?
match(Movie {title: "The Matrix"}) <-[r:ACTED_IN]-(Person {name:"Hugo Weaving"}) 
return r.roles

7.5.7 Complex Paths & Combining Match Clauses


7.5.8 Variable Binding


7.5.9 WHERE Clauses

7.5.10 Path Quantifiers

7.5.11 Graph Updates

Cypher also allows for adding and deleting information

# This requires a set instead of a return statement, e.g.,
match (p:Person)-[ACTED_IN]->(m:Movie) 
set p:Actor

Cypher also allows for adding and deleting properties

# This requires a set instead of a return statement, e.g.,
match(p:Person)-[ACTED_IN]->(m:Movie) 
with p,count(m) as moviecount 
where (moviecount>10) 
set p.famous="true"

Notes on this query:

Cipher allows counting (closed world semantics)

The with construct is used for variable scoping

  • Compute with first
  • Compute where second
    • cf.(confer=compare with) having in SQL

Cypher also allows for adding and deleting nodes and edges

#This requires a create instead of a return statement, e.g.,
match (p1:Person)-[r1:ACTED_IN]->(m:Movie) 
match (p2:Person)-[r2:ACTED_IN]->(m:Movie) 
create (p1)-[:KNOWS]->(p2)

Graph Updates vs. Reasoning
Inference in Cipher

We can infer additional edges using SET/CREATE commands. Those only apply for the current state of the graph, i.e., later changes are not respected

如果在之后对图数据库进行了更改,新增了新的边缘关系,这些更改不会受到之前推断的影响。换句话说,推理操作只适用于执行推理时图数据库的当前状态。

match (p:Person)-[ACTED_IN]->(m:Movie) 
set p:Actor
# Here, a later addition of a person acting in a movie would not get the Actor label!

Inference in RDF/S

Can be updated and/or evaluated at query time

RDF/S 允许推理操作的动态更新,这意味着当数据图发生更改时,可以根据推理规则对新数据进行重新评估,并进行相应的推理。

7.6 Comparison LPG+Cypher vs. RDF*/SPARQL*

相关推荐
yusaisai大鱼几秒前
TensorFlow如何调用GPU?
人工智能·tensorflow
珠海新立电子科技有限公司2 小时前
FPC柔性线路板与智能生活的融合
人工智能·生活·制造
IT古董3 小时前
【机器学习】机器学习中用到的高等数学知识-8. 图论 (Graph Theory)
人工智能·机器学习·图论
曼城周杰伦3 小时前
自然语言处理:第六十三章 阿里Qwen2 & 2.5系列
人工智能·阿里云·语言模型·自然语言处理·chatgpt·nlp·gpt-3
余炜yw3 小时前
【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
人工智能·rnn·深度学习
莫叫石榴姐4 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
如若1234 小时前
利用 `OpenCV` 和 `Matplotlib` 库进行图像读取、颜色空间转换、掩膜创建、颜色替换
人工智能·opencv·matplotlib
YRr YRr4 小时前
深度学习:神经网络中的损失函数的使用
人工智能·深度学习·神经网络
ChaseDreamRunner5 小时前
迁移学习理论与应用
人工智能·机器学习·迁移学习
Guofu_Liao5 小时前
大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法
人工智能·语言模型·矩阵·llama