我创建两个类Book
和Person
参与OWL限制类和对象属性hasAuthor
:获取比如通过SPARQL 1.1
Person
有子类Man
和Women
。Book
具有子类Hard_bounded_book
和Soft_bounded_book
。
我使用的是OWL限制如下创建的Book
另一个子为Book_With_Atleast_One_Male_Author
:
:Book_With_Atleast_One_Male_Author rdfs:subClassOf [
rdf:type owl:Class ;
owl:intersectionOf (
:Book
[ a owl:Restriction ;
owl:onProperty bf:hasAuthor ;
owl:someValuesFrom :Male ]
)
] .
现在我创建和Person
的Book
一些实例和关系:
:Hard_bounded_book1 rdf:type :Hard_bounded_book .
:Hard_bounded_book2 rdf:type :Hard_bounded_book .
:Soft_bounded_book1 rdf:type :Soft_bounded_book .
:Soft_bounded_book2 rdf:type :Soft_bounded_book .
:Male1 rdf:type :Male .
:Male2 rdf:type :Male .
:Female1 rdf:type :Female .
:Female2 rdf:type :Female .
:Hard_bounded_book1 :hasAuthor :Male1
:Hard_bounded_book1 :hasAuthor :Male2
:Hard_bounded_book1 :hasAuthor :Female1
:Hard_bounded_book1 :hasAuthor :Female2
:Soft_bounded_book1 :hasAuthor :Male1
:Soft_bounded_book2 :hasAuthor :Female1
当我写了一个SPARQL查询来获取类Book_With_Atleast_One_Male_Author
的实例,我什么也没得到。 如果您对发生的事情有任何了解,请让我知道吗?
谢谢。
你使用哪种API使用推理与SPARQL? – AKSW
我使用OQL2-QL规则集在GraphDB软件中加载它。 – Sidd
我希望你的意思是'OWL2-QL'。正如下面的答案正确地指出的那样,你必须使用等价公理而不是简单的包含,它只在一个方向上进行推断。 – AKSW