SPARQL查询语句整理
本文大多内容来自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的所有实例
}
如何获取实例对应本体
本体之间存在关系 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查询语句整理的更多相关文章
- sql查询语句整理
首先这是我以下语句查询的一个表结构 t_user插入例如以下数据 t_depart中插入例如以下数据 t_role插入例如以下数据 好,建好表后,我们開始数据库查询语句 简单的查询语句 1. 查看表结 ...
- pg_sql常用查询语句整理
#pg_sql之增删改查 #修改: inset into table_name (id, name, age, address ) select replace(old_id,old_id,new_i ...
- MYSQL 数据库高频查询语句整理
一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...
- sparql 查询语句快速入门
介绍 RDF is a directed, labeled graph data format for representing information in the Web. RDF is ofte ...
- HUE-hive常用查询语句整理
通过hue进行数据导入: ,create table demo_id(`id` string) row format serde 'org.apache.hadoop.hive.serde2.Open ...
- Jena搭建SPARQL查询RDF数据
1 Jena搭建SPARQL查询RDF数据 1.1 Jena概要 · SPARQL是W3C的RDF数据工作组设计的一种查询语言和协议,用于RDF数据的查询.经过类似于JDK安装时候的配置,可以在命令行 ...
- MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行
最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 ...
- MySQL 笔记整理(2) --日志系统,一条SQL查询语句如何执行
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 2) --日志系统,一条SQL查询语句如何执行 MySQL可以恢复到半个月内任意一秒的状态,它的实现和日志系统有关.上一篇中记录了一 ...
- SQL逻辑查询语句执行顺序 需要重新整理
一.SQL语句定义顺序 1 2 3 4 5 6 7 8 9 10 SELECT DISTINCT <select_list> FROM <left_table> <joi ...
随机推荐
- 程序面试题——C实现
平台:win10 x64 +VC6.0 2019/5/22 1.合并三个有序的链表 链表节点定义struct node{ int val; struct node* next;}; str ...
- Matlab修改数值格式/精度/小数位数
————————————命令行方法————————————— 直接在命令行中输入以下命令,但该命令不影响数据的存储形式和计算精度,下次还需进行修改. format 默认格式 format short ...
- kubernetes之configmap
生成容器内的环境变量 1.创建一个名字叫nginx-config的configmap, 变量名nginx_port的值是80, 变量名server_name的值是www.test.com kubect ...
- P4151 最大XOR和路径 线性基
题解见:https://www.luogu.org/problemnew/solution/P4151 其实就是找出所有环 把环上所有边异或起来得到的值扔到线性基里面 然后随便走一条从1~n的链 最后 ...
- tsung压力测试环境部署详细步骤(内附安装包)
操作系统: Redhat 6.3.Redhat6.5 .centos7.4(这些版本已验证过) tsung版本: tsung-1.6.0 下载地址: 链接: https://pan.baidu.com ...
- P3254——DP&&入门
题目 给定一个$n \times m$的$01$矩形,选择其中为$1$的位置,要求互不相邻,问方案数. 解决方案 直接dp因为状态较多,数组很难直接表示出来,我们采用二进制状态压缩存储. 用$dp[i ...
- 压测工具ab的简单使用
apache benchmark(ab)是一种常见的压测工具,不仅可以对apache进行压测,也可以对nginx,tomcat,IIS等进行压测 安装 如果安装了apache,那么ab已经自带了,不需 ...
- BZOJ 3489: A simple rmq problem (KD-tree做法)
KD树水过这道可持久化树套树-其实就是个三维偏序 题解戳这里 CODE #include <bits/stdc++.h> using namespace std; #define ls ( ...
- 【Android-连接数据库】 直接连接SqlServer数据库
一.测试过的开发环境 Eclispse + SqlServer2008R2 二.下载支持Android的SQL驱动 只能下载1.2.7版本的,将 jtds-1.2.7.jar 包放在android项目 ...
- PHP mysqli_init() 函数
定义和用法 mysqli_init() 函数初始化 MySQLi 并返回 mysqli_real_connect() 使用的对象. 语法 mmysqli_init(); 实例 mysqli_ini ...