本文大多内容来自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.#加工过程类的所有属性
}
查询的所有属性的所有数据(s p o)
SELECT?s ?subclass ?oWHERE{
?subclass rdfs:domain.#加工过程类的所有属性
?s ?subclass ?o#返回属性关联的所有数据
}
LIMIT100
查询所有实例及其对应类型
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 : .@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. #找出所有三元组的类型
}
返回了本体和实例数据的类型,混在一起了,因为本体和数据都是用三元组表示的
所以限定到具体数据,返回类型
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
查询结果:
上述查询语句是对整个数据库进行查询,所以查询了所有路径下的数据:
"http://class/"
"http://dataproperty/"
"http://objectproperty/"
等等
可以指定PREFIX : 减小查询范围
比如下面语句
就指定了在‘:’的范围中查找等价属性
PREFIX : PREFIX owl:
SELECT ?property WHERE{
? property (owl:equivalentProperty|^owl:equivalentProperty)*:order_id.
}