在下面的本体中,我试图通过使用 OneOf 使男孩成为女孩的补充,但是使用 Fact++ 或隐士我无法通过查询男孩(Protege 5.2 DL 查询(来获取任何实例,有什么建议吗?
:Bob rdf:type owl:NamedIndividual ,
:Person .
:Mike rdf:type owl:NamedIndividual ,
owl:Thing .
:Sarah rdf:type owl:NamedIndividual ,
:Girl.
:Person rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Class ;
owl:oneOf ( :Bob
:Mike
:Sarah
)
] .
:Girl rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Class ;
owl:oneOf ( :Sarah
)
] ;
rdfs:subClassOf :Person .
:Boy rdf:type owl:Class ;
owl:equivalentClass [ owl:intersectionOf ( :Person
[ rdf:type owl:Class ;
owl:complementOf :Girl
]
) ;
rdf:type owl:Class
] ;
rdfs:subClassOf :Person ;
owl:disjointWith :Girl .
添加一个公理,使所有个体都不同,可以解决斯坦尼斯拉夫建议的问题:
[ rdf:type owl:AllDifferent ;
owl:distinctMembers ( :Bob
:Mike
:Sarah
)
] .
见 https://en.wikipedia.org/wiki/Unique_name_assumption