sparql查询mysql_SPARQL查询语句整理

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

查询子类或等价关系

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

查询 class的property

SELECT?subclassWHERE{

?subclass rdfs:domain.#加工过程类的所有属性

}

b79c4410f9d951f465fae1f06db6e0d6.png

查询的所有属性的所有数据(s p o)

SELECT?s ?subclass ?oWHERE{

?subclass rdfs:domain.#加工过程类的所有属性

?s ?subclass ?o#返回属性关联的所有数据

}

LIMIT100

02fdcc83e3a01d88a8e7627f56e8f180.png

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

SELECT ?instance ?s WHERE{

?instance rdf:type ?s. #找出实例的类型

}

9e1fef89d12ce3ea282c4c6b856966b4.png

查询值为1600KN20173的所有数据

SELECT ?instance ?p WHERE{

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

}

b1619531bac5522c6ef328b02e4395fd.png

如何获取实例对应本体

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

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

执行语句:

select ?x ?y where{

?x hasPizza ?y

}

返回?x=Jim  和 ?y=cheesePizza

如何得到实例对应本体?

用turtle表示rdf

@prefix : .@prefix rdfs: .@prefix pizzas: .@prefix owl: .@prefix xsd: .@prefix rdf: .

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 .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 : prefix rdfs:

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. #找出所有三元组的类型

}

d9479d829875ce39f256c0bc5d2c49ad.png

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

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

SELECT DISTINCT ?s WHERE{

?instance ?p "三月".

?instance rdf:type ?s. #找出实例的类型

}

实例的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#">

empty

empty

2*0.1

3月5日——3月11日

第10周

1级

三月

1600KN20173

查询结果:

646d557d328ffc66e496ea2770c0b2b7.png

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

"http://class/"

"http://dataproperty/"

"http://objectproperty/"

等等

可以指定PREFIX : 减小查询范围

比如下面语句

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

PREFIX : PREFIX owl:

SELECT ?property WHERE{

? property (owl:equivalentProperty|^owl:equivalentProperty)*:order_id.

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值