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.

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部