属性继承树的SPARQL查询:继承谓词的正确存储与查询示例
存储与查询带继承关系的谓词和对象的正确方式
示例TTL文件(example.ttl)
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix uri: <http://uri/> . # 定义类及继承关系 uri:Language rdf:type rdfs:Class . uri:English rdfs:subClassOf uri:Language . uri:BritishEnglish rdfs:subClassOf uri:English . uri:Chinese rdfs:subClassOf uri:Language . uri:MandarinChinese rdfs:subClassOf uri:Chinese . # 定义属性及继承关系 uri:know rdf:type rdf:Property . uri:write rdfs:subPropertyOf uri:know . uri:speak rdfs:subPropertyOf uri:know . # 实例数据 uri:Alex uri:speak uri:English . uri:John uri:write uri:BritishEnglish . uri:Chen uri:write uri:Chinese . uri:Lin uri:speak uri:MandarinChinese .
SPARQL查询语句
该查询用于筛选所有属于uri:know属性(含其子属性)的三元组,且三元组中的对象属于uri:Language类(含其子类)。
select distinct * { ?p rdfs:subPropertyOf* uri:know . # 匹配know及其所有子属性 ?s ?p ?o . # 匹配使用上述属性的三元组 ?o rdfs:subClassOf* uri:Language . # 匹配Language及其所有子类的对象 }
查询结果
| s | p | o |
|---|---|---|
| http://uri/Alex | http://uri/speak | http://uri/English |
| http://uri/Lin | http://uri/speak | http://uri/MandarinChinese |
| http://uri/Chen | http://uri/write | http://uri/Chinese |
| http://uri/John | http://uri/write | http://uri/BritishEnglish |
内容的提问来源于stack exchange,提问作者Nikolay Mashkov
相关产品推荐
相关产品推荐

