先说一下sparql可以做什么?
1.可以从半结构化和结构化的数据中提取
2.通过查询未知的关系可以挖掘数据
3.使用单一简单的查询在分散的数据库中执行
4.将RDF数据转化成其他词语
# prefix declarations 前缀声明
example:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> ... # dataset definition 定义数据集可以减少查询范围 FROM ... # result clause SELECT ?p 或者* # query pattern WHERE { ... } # query modifiers ORDER BY ...
1. rdf:type是谓词时可以用a代替
SELECT * WHERE { [] a ?o} a==rdfs:type ?o==$o
select * where {?s rdfs:subClassOf ?p}
2. SELECT * WHERE { [] a ?o filter regex(str(?o) , "Disorder","i")}
用filter进行过滤 ,regex表示正则表达式,,i表示不区分大小写。网上没有用str,但是我查询不出来,用上str就有结果了
3.可选值
select ?x
where {?x rdfs:subClassOf ?y
Optional{ ?x rdfs:domain ?o}} option 也可以省略
4.SELECT ?title ?price WHERE {?x rdfs:subClassOf ?yOptional{ ?x rdfs:domain ?o filter(?o<3) }}
}
5.去掉重复部分,像sql一样 加distinct
SELECT DISTINCT ?name WHERE { ?x rdfs:domain ?name }6.order by 查询
SELECT DISTINCT ?name WHERE { ?x rdfs:domain ?name } order by ?name
7.union 两者选一
select ?x
where {
{?x rdfs:subClassOf ?y}
union
{?x rdfs:domain ?o}
}
供自己查阅的,还是 菜鸟一枚,等之后再修改提升