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*

相关推荐
拥抱AGI10 分钟前
我说大模型微调没啥技术含量,谁赞成谁反对?
人工智能·学习·语言模型·大模型学习·大模型入门·大模型教程
aqymnkstkw11 分钟前
2024年【电气试验】考试题库及电气试验模拟试题
大数据·c语言·人工智能·嵌入式硬件·安全
2401_85044049730 分钟前
激发AI创造力:掌握Prompt提示词的高效提问方法
人工智能·prompt
Terry Cao 漕河泾1 小时前
SRT3D: A Sparse Region-Based 3D Object Tracking Approach for the Real World
人工智能·计算机视觉·3d·目标跟踪
多猫家庭1 小时前
宠物毛发对人体有什么危害?宠物空气净化器小米、希喂、352对比实测
人工智能·宠物
AI完全体1 小时前
AI小项目4-用Pytorch从头实现Transformer(详细注解)
人工智能·pytorch·深度学习·机器学习·语言模型·transformer·注意力机制
AI知识分享官1 小时前
智能绘画Midjourney AIGC在设计领域中的应用
人工智能·深度学习·语言模型·chatgpt·aigc·midjourney·llama
程序小旭2 小时前
Objects as Points基于中心点的目标检测方法CenterNet—CVPR2019
人工智能·目标检测·计算机视觉
阿利同学2 小时前
yolov8多任务模型-目标检测+车道线检测+可行驶区域检测-yolo多检测头代码+教程
人工智能·yolo·目标检测·计算机视觉·联系 qq1309399183·yolo多任务检测·多检测头检测
CV-King2 小时前
计算机视觉硬件知识点整理(三):镜头
图像处理·人工智能·python·opencv·计算机视觉