这是我的第一个班级Ratings2016
,它是一个等同的类:评级和createdOn的值大于2016年。
<!-- http://semanticrecommender.com/rs#Ratings2016 -->
<owl:Class rdf:about="http://semanticrecommender.com/rs#Ratings2016">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://semanticrecommender.com/rs#Rates"/>
<owl:Restriction>
<owl:onProperty rdf:resource="http://semanticrecommender.com/rs#createdOn"/>
<owl:someValuesFrom>
<rdfs:Datatype>
<owl:onDatatype rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
<owl:withRestrictions rdf:parseType="Collection">
<rdf:Description>
<xsd:minInclusive rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2016-01-01T00:00:00</xsd:minInclusive>
</rdf:Description>
</owl:withRestrictions>
</rdfs:Datatype>
</owl:someValuesFrom>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
这是另一个班级Ratings2015
,相当于评级,并且创建比2015年更大
<!-- http://semanticrecommender.com/rs#Ratings2015 -->
<owl:Class rdf:about="http://semanticrecommender.com/rs#Ratings2015">
<owl:equivalentClass>
<owl:Class>
<owl:intersectionOf rdf:parseType="Collection">
<rdf:Description rdf:about="http://semanticrecommender.com/rs#Rates"/>
<owl:Restriction>
<owl:onProperty rdf:resource="http://semanticrecommender.com/rs#createdOn"/>
<owl:someValuesFrom>
<rdfs:Datatype>
<owl:onDatatype rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/>
<owl:withRestrictions rdf:parseType="Collection">
<rdf:Description>
<xsd:minInclusive rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2015-01-01T00:00:00</xsd:minInclusive>
</rdf:Description>
</owl:withRestrictions>
</rdfs:Datatype>
</owl:someValuesFrom>
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
</owl:equivalentClass>
</owl:Class>
当我运行推理器时,推理者称Ratings2016是2015年评级的子类
这不正确,为什么会这样解决?
答案 0 :(得分:6)
原因是您使用xsd:minInclusive
指定创建日期。但是,根据XMLSchema,xsdminInclusive
仅指定可能值的下限。因此,由于Ratings2016
的创建日期大于Ratings2015
的日期,因此在为Ratings2015
指定的值中包含从2015年开始,不要终止),属于该类。
解决此问题的一种方法当然取决于您的问题,但也许就足以为您的评级声明xsd:maxInclusive
值。