本文大多内容来自Joshua Taylor的回答

https://stackoverflow.com/users/1281433/joshua-taylor

查询子类或等价关系

https://stackoverflow.com/questions/21092246/sparql-query-subclass-or-equivalentto/21093154#21093154

even though owl:equivalentClass is a symmetric property (i.e., from a owl:equivalentClass b we can infer b owl:equivalentClass a), the triple might be present in only one direction in the data

在数据里面等价关系是单向表示的,因此查询等价类的语句为

?myClass (owl:equivalentClass|^owl:equivalentClass)* :MyClass

查询等价属性的语句为

?p (owl:equivalentProperty|^ owl:equivalentProperty)* :order_no

查询<http://class/加工过程> class的property

SELECT  ?subclass
WHERE {
?subclass rdfs:domain <http://class/加工过程>.#加工过程类的所有属性
}

查询<http://class/加工过程>的所有属性的所有数据(s p o)

SELECT  ?s ?subclass ?o
WHERE {
?subclass rdfs:domain <http://class/加工过程>.#加工过程类的所有属性
?s ?subclass ?o#返回属性关联的所有数据
}
LIMIT 100

查询所有实例及其对应类型

SELECT ?instance ?s WHERE {
?instance rdf:type ?s. #找出实例的类型
}

查询值为1600KN20173的所有数据

SELECT ?instance ?p WHERE {
?instance ?p “1600KN20173”. #找出属性值为V101208的所有实例
}

如何获取实例对应本体

https://stackoverflow.com/questions/18458150/how-to-query-classes-with-object-property-in-sparql/18466646#18466646

本体之间存在关系  Human ----(hasPizza)---> Pizzas

为本体添加实例  Human:Jim ----(hasPizza)---> Pizzas:cheesePizza

执行语句:

select ?x ?y where {
?x hasPizza ?y
}

返回?x=Jim  和 ?y=cheesePizza

如何得到实例对应本体?

用turtle表示rdf

@prefix :        <http://example.org/pizzas#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix pizzas: <http://example.org/pizzas#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . pizzas:Jim
a pizzas:Human , owl:NamedIndividual ;
pizzas:hasPizza pizzas:CheesePizza . pizzas:hasPizza
a owl:ObjectProperty ;
rdfs:domain pizzas:Human ;
rdfs:range pizzas:Pizza . pizzas:Human
a owl:Class . pizzas:Pizza
a owl:Class . <http://example.org/pizzas>
a owl:Ontology . pizzas:CheesePizza
a pizzas:Pizza , owl:NamedIndividual .

可以看到在模型定义中,

pizzas:hasPizza
a owl:ObjectProperty ;
rdfs:domain pizzas:Human ;
rdfs:range pizzas:Pizza .

因此可以利用属性hasPizza的rdfs:domain和rdfs:range两个关系来获得

查询语句为:

prefix :        <http://example.org/pizzas#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> select ?domain ?range where {
:hasPizza rdfs:domain ?domain ;
rdfs:range ?range .
}

返回:

-------------------
| domain | range |
===================
| :Human | :Pizza |
-------------------

2.利用rdf:type获取

SELECT DISTINCT ?s WHERE {
?instance rdf:type ?s. #找出所有三元组的类型
}

返回了本体和实例数据的类型,混在一起了,因为本体和数据都是用三元组表示的

所以限定到具体数据,返回类型

SELECT DISTINCT ?s WHERE {
?instance ?p "三月".
?instance rdf:type ?s. #找出实例的类型
}

实例的rdf:

  <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:j.0="http://class/"
xmlns:j.1="http://dataproperty/"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:j.2="http://objectproperty/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
<j.0:维保 rdf:about="http://individual/维保/1600KN20173">
<j.1:保养人>empty</j.1:保养人>
<j.1:实际保养日期>empty</j.1:实际保养日期>
<j.1:所需工时_人数_时间>2*0.1</j.1:所需工时_人数_时间>
<j.1:计划保养时间>3月5日——3月11日</j.1:计划保养时间>
<j.1:计划保养周>第10周</j.1:计划保养周>
<j.1:设备保养级别>1级</j.1:设备保养级别>
<j.1:月份>三月</j.1:月份>
<j.1:维保计划编号>1600KN20173</j.1:维保计划编号>
</j.0:维保>

查询结果:

上述查询语句是对整个数据库进行查询,所以查询了所有路径下的数据:

"http://class/"
"http://dataproperty/"
"http://objectproperty/"

等等

可以指定PREFIX : <http://class/> 减小查询范围

比如下面语句

就指定了在‘:’的范围中查找等价属性

PREFIX : <http://www.siemens.com/semantic_web#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?property WHERE {
? property (owl:equivalentProperty|^owl:equivalentProperty)* :order_id.
}

SPARQL查询语句整理的更多相关文章

  1. sql查询语句整理

    首先这是我以下语句查询的一个表结构 t_user插入例如以下数据 t_depart中插入例如以下数据 t_role插入例如以下数据 好,建好表后,我们開始数据库查询语句 简单的查询语句 1. 查看表结 ...

  2. pg_sql常用查询语句整理

    #pg_sql之增删改查 #修改: inset into table_name (id, name, age, address ) select replace(old_id,old_id,new_i ...

  3. MYSQL 数据库高频查询语句整理

    一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...

  4. sparql 查询语句快速入门

    介绍 RDF is a directed, labeled graph data format for representing information in the Web. RDF is ofte ...

  5. HUE-hive常用查询语句整理

    通过hue进行数据导入: ,create table demo_id(`id` string) row format serde 'org.apache.hadoop.hive.serde2.Open ...

  6. Jena搭建SPARQL查询RDF数据

    1 Jena搭建SPARQL查询RDF数据 1.1 Jena概要 · SPARQL是W3C的RDF数据工作组设计的一种查询语言和协议,用于RDF数据的查询.经过类似于JDK安装时候的配置,可以在命令行 ...

  7. MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行

    最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 ...

  8. MySQL 笔记整理(2) --日志系统,一条SQL查询语句如何执行

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 2) --日志系统,一条SQL查询语句如何执行 MySQL可以恢复到半个月内任意一秒的状态,它的实现和日志系统有关.上一篇中记录了一 ...

  9. SQL逻辑查询语句执行顺序 需要重新整理

    一.SQL语句定义顺序 1 2 3 4 5 6 7 8 9 10 SELECT DISTINCT <select_list> FROM <left_table> <joi ...

随机推荐

  1. V.24 V.35 ISDN E1 POS这些常见的广域网接口

    转:http://blog.sina.com.cn/s/blog_bc1c78600101l2ss.html 广域网(Wide Area Network)是一种跨地区的数据通讯网络,通常是一个局域网到 ...

  2. Django:中间件与csrf

    一.中间件 什么是中间件 中间件有什么用 自定义中间件 中间件应用场景 二.csrf csrf token跨站请求伪造 一.中间件 什么是中间件 中间件顾名思义,是介于request与response ...

  3. 02_ Flume的安装部署及其简单使用

    一.Flume的安装部署: Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境 安装包的下载地址为:http://www-us.apache.org/dist/flume/1. ...

  4. 用实例的方式去理解storm的并发度

    什么是storm的并发度 一个topology(拓扑)在storm集群上最总是以executor和task的形式运行在suppervisor管理的worker节点上.而worker进程都是运行在jvm ...

  5. Oracle 单列去重 显示单行所有列数据

    问题:test_table 表中有 a,b,c 三个字段,求根据字段a 去除重复数据,得到去重后的整行数据 根据mysql的经验尝试以下方法均失败 1.使用 distinct 关键字 (oracle查 ...

  6. 【转载】@Component, @Repository, @Service的区别

    @Component, @Repository, @Service的区别 官网引用 引用spring的官方文档中的一段描述: 在Spring2.0之前的版本中,@Repository注解可以标记在任何 ...

  7. Redis主从复制(读写分离)(四)

    Redis主从复制(读写分离) 克隆三台linux虚拟机   9.1.1.克隆虚拟机   9.1.2.生成新的mack地址 9.1.3.主从复制配置 redis主从复制 概述 1.redis的复制功能 ...

  8. 简单了解学习PHP(针对前端开发)

    1.服务器(服务器系统) 通常是指较强的计算能力能够同时服务多人的计算机 常见的服务器操作系统: 1.各个版本的Linux操作系统 2.乌班图.centos 3.mac  os(苹果) 4.windo ...

  9. springboot中使用spring security,登录url就出现403错误

    参考链接:https://segmentfault.com/q/1010000012743613 有两个controller,一个是所有用户可以访问的@RequestMapping("use ...

  10. 数据库中的using语句,以及与try……catch……finally的关系

    每new一个对象,就会开辟一块资源.using(我们new的对象){……},“}”处自动释放占用的资源(即调用Dispose方法).等效于fianlly中调用Dispose方法. Dispose内部会 ...