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*

相关推荐
机核研创社6 分钟前
一条橡筋的接口,决定内裤睡裤的舒适度——全自动双头接橡筋机怎么做明橡筋?
人工智能·自动化
IT_陈寒11 分钟前
Redis主从切换竟让业务卡了3秒?这个坑我替你踩了
前端·人工智能·后端
byte轻骑兵12 分钟前
时序数据库选型全指南|大数据工业场景Apache IoTDB落地实操
大数据·数据库·人工智能·apache iotdb
墨天梦20 分钟前
21-ReAct循环的完整实现
人工智能·自然语言处理
troy12824 分钟前
告别 Copilot?Codex、Claude Code、DeepSeek Harness、Kimi、ChatGPT 哪个更适合本地化部署,更有性价比?
人工智能·python·开源软件
AI的探索之旅25 分钟前
97 个 OpenCV 实例(二十九):三相机联合标定,把三只眼睛绑在一起
人工智能·opencv·计算机视觉
Data-Miner31 分钟前
商品ABC分类分析怎么用AI做?脚本复用+图表可编辑的一次完整实操
人工智能·数据分析·excel
suaizai_33 分钟前
MCP协议实战:将工具迁移至进程外
人工智能
weixin_4462608533 分钟前
RAFT:面向故障排查智能体的有状态检索增强框架
人工智能
YOLO_DATA35 分钟前
无人机高速公路道路缺陷数据集 道路损伤数据集 公路裂缝识别 AI大疆数据集 10798期
人工智能·深度学习·yolo·机器学习·cnn