sparql和cpyher
sparql
SELECT [DISTINCT] <variable1> [<variable2> ...] |
符号:
- variable: 变量,使用
?变量名
来表示变量,例如?x1
: 注释
- *和+: 正则表达式,*表示0次或多次,+表示一次或多次
- ^: 用来反转主语和宾语之间的关系,例如
s p o
和o ^p s
等价 - /: 表示拼接谓语。例如
?s c:cites/c:cites/c:cites :paperA
表示s经过引用距离为3的所有论文
关键字:
- WHERE: 用来表示查询条件,它由主谓宾三部分组成,其中主语和宾语可以为变量
- FROM: 用来表明数据集位置,例如
SELECT ?email
FROM <ex069.ttl> # 从该文件中查找
FROM <ex122.ttl>
WHERE
{ ?s ab:email ?email . } - OPTIONAL: 如果存在则返回,否则返回空
SELECT ?first ?last ?workTel
WHERE
{
?s ab:firstName ?first ;
ab:lastName ?last .
OPTIONAL
{ ?s ab:workTel ?workTel . }
} - FILTER: 一个函数,如果输入bool为真,则选择
SELECT ?s ?cost
WHERE
{
?s dm:cost ?cost .
FILTER (?cost < 10)
} - MINUS:在查询结果中减去某种模式的数据
SELECT ?first ?last
WHERE
{
?s ab:firstName ?first ;
ab:lastName ?last .
MINUS { ?s ab:workTel ?workNum } - UNION: 合并两个模式的查询结果
SELECT ?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
每个点都有三个特征:名称,类型,属性。每条边有三个特征: 名称,动作,属性
节点语法
() |
关系语法
--> # 非直接相连的关系 |
二者组合便成了一个模式,两端是两个节点,中间是他们的关系
(keanu:Person:Actor {name: "Keanu Reeves"} ) |
一个模式也可以赋给一个变量acted_in = (:Person)-[:ACTED_IN]->(:Movie)
子句
- CREATE: 创建节点,关系,模式为现有节点添加关系
CREATE (: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,mMATCH (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: 查找并返回
MATCH (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
添加某些属性MERGE (m:Movie { title:"Cloud Atlas" })
ON CREATE SET m.released = 2012
RETURN m - WHERE: 对查找结果进行过滤
MATCH (m:Movie)
WHERE m.title = "The Matrix"
RETURN m - RETURN: 对结果进行处理
MATCH (:Person)
RETURN count(*) AS people
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment