【发布时间】:2017-06-12 16:04:48
【问题描述】:
我正在创建基于 RDFS/OWL 的类层次结构,并使用 a (rdf:type) 关系在所有类中创建实例。我想检索特定类的实例,不包括其子类的实例。但是,当我编写一个 SPARQL 查询时,它也会为我提供每个子类的所有实例。
我的本体说:
Book是一个类,它有两个子类:hard_bounded_book和soft_binded_books
换句话说(在某些情况下):
@prefix ex: <http://book_triples.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
ex:hard_bounded_book1
a ex:hard_bounded_book .
ex:soft_binded_books1a
a ex:soft_binded_books .
ex:soft_binded_books rdfs:subClassOf ex:Book .
ex:hard_bounded_book rdfs:subClassOf ex:Book .
ex:Book a rdf:Class .
ex:Book1 a ex:Book .
当我查询时
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ex: <http://book_triples.org/>
SELECT ?book
WHERE
{ ?book rdf:type ex:Book }
它返回所有三个Book1、hard_bounded_book1、soft_binded_books1,但我只想获得第一个结果 (Book1)。
感谢任何帮助。谢谢。
【问题讨论】:
-
您使用哪个 API 或三重存储?