我想建立一个本体模型,在那里我可以表示一个实体的缺失,可以这么说。例如,我希望有Rain和No_Rain,我将它们定义为不相交类。在此之后,我有了object属性has_rain。我想以某种方式能够推理出,对于同一个人来说,不可能同时拥有has_rain(雨)和has_rain(无雨)我已经搜索了很多,但是没有找到我问题的答案。也许我在什么地方错过了。对不起,如果我没有解释好一切,这是我的第一个问题。我希望你理解一切,并提前表示感谢!编辑:
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Object Properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#has_rain -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#has_rain">
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2002/07/owl#topObjectProperty"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
</owl:ObjectProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#No_Rain -->
<owl:Class rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#No_Rain"/>
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#Rain -->
<owl:Class rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#Rain"/>
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#Scene -->
<owl:Class rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#Scene"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Individuals
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#no_rain -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#no_rain"/>
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#rain -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#rain"/>
<!-- http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#scene -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#scene">
<has_rain rdf:resource="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#rain"/>
</owl:NamedIndividual>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// General axioms
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AllDifferent"/>
<owl:distinctMembers rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#no_rain"/>
<rdf:Description rdf:about="http://www.semanticweb.org/qala/ontologies/2021/1/untitled-ontology-28#rain"/>
</owl:distinctMembers>
</rdf:Description>
</rdf:RDF>
我也开始使用owlready,但我还是新手,但如果我必须在代码中对此建模,它将是:
with ontology:
class Rain(Thing):
pass
class No_Rain(Thing):
pass
class Scene(Thing):
pass
class has_rain(ObjectProperty):
domain = [Scene]
range = [Rain or No_Rain]
rain = Rain("rain")
no_rain = No_Rain("no_rain")
AllDisjoint(Rain, No_Rain)
我希望这让它更清楚。
类层次结构
你似乎想要定义可以有不同天气的场景。理想情况下,一个场景不应该既有雪又干燥。
因为这是关于一个场景的,所以我将定义不同类型的sceneWeather
,即dryscene
、snowyscene
和rainyscene
,它们是互不相交的--它不能同时下雪和下雨。然后,我将对象属性HasRain
定义为domain,将RainyScene
定义为domain,并将HassNow
和IsDry
定义为domain。
我将sceneWeather
作为父类引入,假设您可能希望捕获各种场景相关信息。在下面的示例中,我包含了scenetimeofday
,将morning
作为子类,并将ismorning
作为对象属性,将morning
作为域。
基于以上内容,您可以通过断言对于snowymorningscene
我们有hassnow
和ismorning
来定义snowymorningscene
。使用推理器,它将推断snowymorningscene
的类型为snowyscene
和morning
。如果您现在声明snowymorningscene
isdry
,将导致不一致。
下面是完成此操作的完整本体。
<rdf:RDF xmlns="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#"
xml:base="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:untitled-ontology-291="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#">
<owl:Ontology rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Object Properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isDry -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isDry">
<rdfs:subPropertyOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneWeather"/>
<rdfs:domain rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#DryScene"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isMorning -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isMorning">
<rdfs:subPropertyOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneTimeOfDay"/>
<rdfs:domain rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Morning"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isRainy -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isRainy">
<rdfs:subPropertyOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneWeather"/>
<rdfs:domain rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#RainyScene"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isSnowy -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#isSnowy">
<rdfs:subPropertyOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneWeather"/>
<rdfs:domain rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SnowyScene"/>
</owl:ObjectProperty>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneTimeOfDay -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneTimeOfDay"/>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneWeather -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#sceneWeather"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#DryScene -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#DryScene">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneWeather"/>
</owl:Class>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#MidDay -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#MidDay">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneTimeOfDay"/>
<owl:disjointWith rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Morning"/>
</owl:Class>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Morning -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Morning">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneTimeOfDay"/>
</owl:Class>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#RainyScene -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#RainyScene">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneWeather"/>
</owl:Class>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Scene -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Scene"/>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneTimeOfDay -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneTimeOfDay">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Scene"/>
</owl:Class>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneWeather -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneWeather">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#Scene"/>
</owl:Class>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SnowyScene -->
<owl:Class rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SnowyScene">
<rdfs:subClassOf rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SceneWeather"/>
</owl:Class>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Individuals
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#dry -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#dry"/>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#morning -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#morning"/>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#snow -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#snow"/>
<!-- http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#snowyMorningScene -->
<owl:NamedIndividual rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#snowyMorningScene">
<isDry rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#dry"/>
<isMorning rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#morning"/>
<isSnowy rdf:resource="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#snow"/>
</owl:NamedIndividual>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// General axioms
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AllDisjointClasses"/>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#DryScene"/>
<rdf:Description rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#RainyScene"/>
<rdf:Description rdf:about="http://www.semanticweb.org/henriette/ontologies/2021/1/untitled-ontology-291#SnowyScene"/>
</owl:members>
</rdf:Description>
</rdf:RDF>
<!-- Generated by the OWL API (version 4.5.9.2019-02-01T07:24:44Z) https://github.com/owlcs/owlapi -->
如果我对本体中“class1”的所有实例都有相同的对象属性值“val1”,我如何推断该“class1”的对象属性值为“val1”
我已经在Protege5.2中创建了一个本体,现在我正在尝试正确地创建相应类的对象属性。下面是我的UML图的一个片段,我根据它构建了我的本体:我的本体的一个片段 关于isLocated对象属性,它们以以下方式表征:如果一个节点X有一个站点值Z,而同一个值Z出现在一个位置Y的SITEIST中,那么节点X位于位置Y中。 我应该看看SWRL规则,还是有什么方法可以在不需要去那里的情况下对其进行编码? 提
如何处理对象的javascript数组,例如: 并通过求和这些值合并重复的键。为了得到这样的东西: 我尝试过迭代并添加到一个新数组中,但这没有起到作用:
我有一个这样的对象数组: 我希望每个人(名字)都有一个对象,并添加他们的对象。 因此,最终阵列将是: 我使用的真正数组非常大,这就是为什么我正在寻找最有效的方法。
所以我做了两组物体,就像这样。 这些都是4位数的对象,所以它就像。。。 如果我有2个集合,set1和set2,我想更新set1和set2,只包含set1具有与set2的第一个属性匹配的最后一个属性的对象。 例如第1组中的1234将与第2组中的3456匹配。 我可以很容易地将其作为列表而不是集合来完成,但如果我能够理解过程,集合会感觉效率更高,但不确定如何返回对象属性的交集。任何帮助。 编辑:因为我
问题内容: 从https://stackoverflow.com/a/1529099/156458 为了支持任意属性分配,对象需要一个:与对象关联的字典,可以在其中存储任意属性。否则,就无处放置新属性。 在可怕的循环依赖问题之前(因为它像大多数其他事物一样,都是从;-继承的),它的实例不会携带-如果这样做的话,这会使python中的每个对象都受字典约束,这意味着开销当前没有或不需要字典的每个对象中