sparql和cpyher
本文最后更新于 2023年9月22日 上午
sparql
1 | |
符号:
- variable: 变量,使用
?变量名来表示变量,例如?x1 : 注释
- *和+: 正则表达式,*表示0次或多次,+表示一次或多次
- ^: 用来反转主语和宾语之间的关系,例如
s p o和o ^p s等价 - /: 表示拼接谓语。例如
?s c:cites/c:cites/c:cites :paperA表示s经过引用距离为3的所有论文
关键字:
- WHERE: 用来表示查询条件,它由主谓宾三部分组成,其中主语和宾语可以为变量
- FROM: 用来表明数据集位置,例如
1
2
3
4
5SELECT ?email
FROM <ex069.ttl> # 从该文件中查找
FROM <ex122.ttl>
WHERE
{ ?s ab:email ?email . } - OPTIONAL: 如果存在则返回,否则返回空
1
2
3
4
5
6
7
8SELECT ?first ?last ?workTel
WHERE
{
?s ab:firstName ?first ;
ab:lastName ?last .
OPTIONAL
{ ?s ab:workTel ?workTel . }
} - FILTER: 一个函数,如果输入bool为真,则选择
1
2
3
4
5
6SELECT ?s ?cost
WHERE
{
?s dm:cost ?cost .
FILTER (?cost < 10)
} - MINUS:在查询结果中减去某种模式的数据
1
2
3
4
5
6SELECT ?first ?last
WHERE
{
?s ab:firstName ?first ;
ab:lastName ?last .
MINUS { ?s ab:workTel ?workNum } - UNION: 合并两个模式的查询结果
1
2
3
4
5
6
7
8
9
10SELECT ?first ?last ?instrument
WHERE
{
?person ab:firstName ?first ;
ab:lastName ?last ;
ab:instrument ?instrument .
{ ?person ab:instrument "sax" . }
UNION
{ ?person ab:instrument "trumpet" . }
} - IN: 变量是否在集合中
cpyher
每个点都有三个特征:名称,类型,属性。每条边有三个特征: 名称,动作,属性
节点语法
1 | |
关系语法
1 | |
二者组合便成了一个模式,两端是两个节点,中间是他们的关系
1 | |
一个模式也可以赋给一个变量1
acted_in = (:Person)-[:ACTED_IN]->(:Movie)
子句
- CREATE: 创建节点,关系,模式为现有节点添加关系
1
2
3
4
5
6CREATE (:Movie { title:"The Matrix",released:1997 })
CREATE (a:Person { name:"Tom Hanks",
born:1956 })-[r:ACTED_IN { roles: ["Forrest"]}]->(m:Movie { title:"Forrest Gump",released:1994 })
CREATE (d:Person { name:"Robert Zemeckis", born:1951 })-[:DIRECTED]->(m)
RETURN a,d,r,m1
2
3
4MATCH (p:Person { name:"Tom Hanks" })
CREATE (m:Movie { title:"Cloud Atlas",released:2012 })
CREATE (p)-[r:ACTED_IN { roles: ['Zachry']}]->(m)
RETURN p,r,m - MATCH: 查找并返回
1
2
3
4
5
6
7
8
9
10MATCH (m:Movie)
RETURN m
MATCH (p:Person { name:"Keanu Reeves" })
RETURN p
MATCH (p:Person { name:"Tom Hanks" })-[r:ACTED_IN]->(m:Movie)
RETURN m.title, r.roles - MERGE: 查找模式,如果不存在则创建。并且可以通过
ON CREATE添加某些属性1
2
3MERGE (m:Movie { title:"Cloud Atlas" })
ON CREATE SET m.released = 2012
RETURN m - WHERE: 对查找结果进行过滤
1
2
3MATCH (m:Movie)
WHERE m.title = "The Matrix"
RETURN m - RETURN: 对结果进行处理
1
2MATCH (:Person)
RETURN count(*) AS people
sparql和cpyher
https://www.xinhecuican.tech/post/168ce5e3.html