我创建了这个本体,它包含两个类:血糖和服务。血糖有两个数据属性:范围为xsd:int的hasValu和范围为xsd:string的hasStatut。对象属性triggerService将血糖作为域,将服务作为范围。
我想用以下规则推断数据属性断言:
Blood_Sugar(?x)hasValue(?X,?y)/swlb:比(?Y,126)的大小:小于(?y,500)→hasStatut(?X,高)
然后我想用这个规则推断一个新的对象属性:
Blood_Sugar(?x)/hasStatut(?X,"High")的服务(?s)→触发器服务(?X,?s)
然而,当我创建规则应适用的个人时,推理者并没有给我想要的结果。下面是一个本体,它演示了这种行为:
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY swrl "http://www.w3.org/2003/11/swrl#" >
<!ENTITY swrlb "http://www.w3.org/2003/11/swrlb#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY protege "http://protege.stanford.edu/plugins/owl/protege#" >
<!ENTITY xsp "http://www.owl-ontologies.com/2005/08/07/xsp.owl#" >
<!ENTITY swrla "http://swrl.stanford.edu/ontologies/3.3/swrla.owl#" >
<!ENTITY sqwrl "http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl#" >
]>
<rdf:RDF xmlns="http://www.owl-ontologies.com/Ontology1391620136.owl#"
xml:base="http://www.owl-ontologies.com/Ontology1391620136.owl"
xmlns:swrla="http://swrl.stanford.edu/ontologies/3.3/swrla.owl#"
xmlns:sqwrl="http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:xsp="http://www.owl-ontologies.com/2005/08/07/xsp.owl#"
xmlns:swrl="http://www.w3.org/2003/11/swrl#"
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
xmlns:swrlb="http://www.w3.org/2003/11/swrlb#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#">
<owl:Ontology rdf:about="">
<owl:imports rdf:resource="http://sqwrl.stanford.edu/ontologies/built-ins/3.4/sqwrl.owl"/>
<owl:imports rdf:resource="http://swrl.stanford.edu/ontologies/3.3/swrla.owl"/>
</owl:Ontology>
<swrl:Variable rdf:ID="s"/>
<swrl:Variable rdf:ID="x"/>
<swrl:Variable rdf:ID="y"/>
<owl:Class rdf:ID="Blood_Sugar"/>
<swrl:Imp rdf:ID="Rule-2">
<swrl:body>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;ClassAtom"/>
<swrl:argument1>
<rdf:Description rdf:about="#x"/>
</swrl:argument1>
<swrl:classPredicate rdf:resource="#Blood_Sugar"/>
</rdf:Description>
</rdf:first>
<rdf:rest>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;DatavaluedPropertyAtom"/>
<swrl:argument2 rdf:datatype="&xsd;string">High</swrl:argument2>
<swrl:argument1>
<rdf:Description rdf:about="#x"/>
</swrl:argument1>
<swrl:propertyPredicate rdf:resource="#hasStatut"/>
</rdf:Description>
</rdf:first>
<rdf:rest>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;ClassAtom"/>
<swrl:argument1>
<rdf:Description rdf:about="#s"/>
</swrl:argument1>
<swrl:classPredicate rdf:resource="#Service"/>
</rdf:Description>
</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</swrl:AtomList>
</rdf:rest>
</swrl:AtomList>
</rdf:rest>
</swrl:AtomList>
</swrl:body>
<swrl:head>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;IndividualPropertyAtom"/>
<swrl:argument2>
<rdf:Description rdf:about="#s"/>
</swrl:argument2>
<swrl:argument1>
<rdf:Description rdf:about="#x"/>
</swrl:argument1>
<swrl:propertyPredicate rdf:resource="#triggerService"/>
</rdf:Description>
</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</swrl:AtomList>
</swrl:head>
</swrl:Imp>
<swrl:Imp rdf:ID="Rule-1">
<swrl:body>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;ClassAtom"/>
<swrl:argument1>
<rdf:Description rdf:about="#x"/>
</swrl:argument1>
<swrl:classPredicate rdf:resource="#Blood_Sugar"/>
</rdf:Description>
</rdf:first>
<rdf:rest>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;DatavaluedPropertyAtom"/>
<swrl:argument2>
<rdf:Description rdf:about="#y"/>
</swrl:argument2>
<swrl:argument1>
<rdf:Description rdf:about="#x"/>
</swrl:argument1>
<swrl:propertyPredicate rdf:resource="#hasValue"/>
</rdf:Description>
</rdf:first>
<rdf:rest>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;BuiltinAtom"/>
<swrl:arguments>
<rdf:List>
<rdf:first>
<rdf:Description rdf:about="#y"/>
</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;long">126</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</rdf:List>
</rdf:rest>
</rdf:List>
</swrl:arguments>
<swrl:builtin>
<rdf:Description rdf:about="&swrlb;greaterThan"/>
</swrl:builtin>
</rdf:Description>
</rdf:first>
<rdf:rest>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;BuiltinAtom"/>
<swrl:arguments>
<rdf:List>
<rdf:first>
<rdf:Description rdf:about="#y"/>
</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;long">500</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</rdf:List>
</rdf:rest>
</rdf:List>
</swrl:arguments>
<swrl:builtin>
<rdf:Description rdf:about="&swrlb;lessThan"/>
</swrl:builtin>
</rdf:Description>
</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</swrl:AtomList>
</rdf:rest>
</swrl:AtomList>
</rdf:rest>
</swrl:AtomList>
</rdf:rest>
</swrl:AtomList>
</swrl:body>
<swrl:head>
<swrl:AtomList>
<rdf:first>
<rdf:Description>
<rdf:type rdf:resource="&swrl;DatavaluedPropertyAtom"/>
<swrl:argument2 rdf:datatype="&xsd;string">High</swrl:argument2>
<swrl:argument1>
<rdf:Description rdf:about="#x"/>
</swrl:argument1>
<swrl:propertyPredicate rdf:resource="#hasStatut"/>
</rdf:Description>
</rdf:first>
<rdf:rest rdf:resource="&rdf;nil"/>
</swrl:AtomList>
</swrl:head>
</swrl:Imp>
<Blood_Sugar rdf:ID="Blood_Sugar_1">
<hasValue rdf:datatype="&xsd;int">150</hasValue>
</Blood_Sugar>
<owl:DatatypeProperty rdf:ID="hasStatut">
<rdfs:domain rdf:resource="#Blood_Sugar"/>
<rdfs:range rdf:resource="&xsd;string"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="hasValue">
<rdfs:domain rdf:resource="#Blood_Sugar"/>
<rdfs:range rdf:resource="&xsd;int"/>
</owl:DatatypeProperty>
<owl:Class rdf:ID="Service"/>
<Service rdf:ID="Service_1"/>
<owl:ObjectProperty rdf:ID="triggerService">
<rdfs:domain rdf:resource="#Blood_Sugar"/>
<rdfs:range rdf:resource="#Service"/>
</owl:ObjectProperty>
</rdf:RDF>
根据您的评论,也许使用SWRL规则来推断新的对象属性断言的示例会让您走上正轨。一些OWL 2推理支持SWRL规则,所以我使用Protégé4. x和Pellet。SWRL规则可用于推断新的对象属性断言。例如,在下面的本体论中,有一个带有个人Alice,Bill,Carl和Raymond的类Person,一个对象属性like和一个规则:
人(?x)→ 喜欢(?x,雷蒙德)
启用颗粒推理机(推理机)后
以下是本体:
@prefix : <http://example.org/swrl-example#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix swrl: <http://www.w3.org/2003/11/swrl#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix swrlb: <http://www.w3.org/2003/11/swrlb#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
<http://example.org/swrl-example>
a owl:Ontology .
:Person a owl:Class .
:Raymond a owl:NamedIndividual , :Person .
:Alice a owl:NamedIndividual , :Person .
[ a swrl:Imp ;
swrl:body [ a swrl:AtomList ;
rdf:first [ a swrl:ClassAtom ;
swrl:argument1 <urn:swrl#x> ;
swrl:classPredicate :Person
] ;
rdf:rest ()
] ;
swrl:head [ a swrl:AtomList ;
rdf:first [ a swrl:IndividualPropertyAtom ;
swrl:argument1 <urn:swrl#x> ;
swrl:argument2 :Raymond ;
swrl:propertyPredicate :likes
] ;
rdf:rest ()
]
] .
:Bill a owl:NamedIndividual , :Person .
:likes a owl:ObjectProperty .
:Carl a owl:NamedIndividual , :Person .
<urn:swrl#x> a swrl:Variable .
但是当我创建实例时,推理器没有给我想要的结果!!!
更多的细节在这里会有所帮助。你怎么知道推理器(顺便问一下,你用的是哪个推理器?)推断想要的属性不是吗?你启用推理器了吗?您是否运行了查询来检查推论是否存在?您是否在Protégé中设置了配置以显示所有适当的推论?
无论如何,感谢你提供本体论来重现你的结果。我能够把它加载到Protégé,运行颗粒推理器,我可以得到以下推论:
Blood_Sugar_1 triggerService Service_1
Blood_Sugar_1 hasStatut "High"^^string
Blood_Sugar_1 hasStatut "150"^^int
虽然Pellet能够计算所有这些推论,但Protégé默认情况下仅显示对象属性的推论;你必须进入推理机
假设OWL本体论包含以下SWRL规则: 和以下对象属性断言: 当我运行的隐士推理器中的蛋白质,我得到以下推断对象属性断言: 然而,当我用owlready2加载同一个本体并运行它的hermitreasoner时,我没有得到任何推断的对象属性断言。例如: 不返回任何属性。 我确实以RDFXML格式保存了本体,并且可以使用owlready2检索SWRL规则。 owlready2推理器不支持这种推论吗?
用户和首选项由objectProperty链接。 objectProperty断言需要通过SWRL规则从其他用户方面推断。例如,如果用户有听力困难,则需要将设置为,因此: 这很好用。但是,由于我有其他SWRL规则,这些规则也为相同的用户推断,例如: 我需要的是一个规则,不知怎么的,只有在没有更高的级别已经断言的情况下才会断言偏好。在给定的示例中,即使为true,唯一断言的级别也应该是,因为是其他规
假设我有一些本体论创建的蛋白质,有一个类的实例与一些对象属性,和对象属性的列表,已显示在以下图片: 对象属性的层次结构如下所示: 现在,当我打开Reasoner(Hermit)时,我得到了同一个人的以下断言对象属性: 当我点击推断对象属性“dependsUp”客户的解释时,我得到: 我的问题是,我如何使用Java生成它?我已经可以通过以下方法获得某些个人的推断对象属性(abreviety在这里不完
先上代码: 问题: 该如何定义函数testFn的data参数,才能让data的解构与DetailDataType的定义相符,并且编辑器有提示,现在data的解构全是any,如下: 求ts大神解答,谢谢!!!
我试图从reasoner(Hermit1.3.8.4)和OWLApi(3.4.10)中检索属性断言。在这张图中,我想找回“我是爷爷桑德罗,我是爷爷塞尔吉奥”。 图片-对象属性断言 我尝试在https://stackoverflow.com/a/37497541/3760251中使用Ignazio答案 与Horridge的例子,但OWL API改变了签名,我不知道如何使用它。https://www.