通过计算属性来推断 OWL 中的知识
Inferring knowledge in OWL by counting properties
我有一个 ontology 人和城市 classes。人们去城市旅行,这种旅行在 traveledTo 对象 属性 中表示。我想添加一个 WorldTraveler class。如果人们去过 2 个或更多城市,那么他们就是世界旅行者。我如何在我的 ontology 中执行此操作?
@prefix : <http://www.semanticweb.org/chris/ontologies/2017/9/untitled-ontology-64#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/chris/ontologies/2017/9/untitled-ontology-64> .
<http://www.semanticweb.org/chris/ontologies/2017/9/untitled-ontology-64> rdf:type owl:Ontology .
:traveledTo rdf:type owl:ObjectProperty ;
rdfs:domain :Person ;
rdfs:range :City .
:City rdf:type owl:Class .
:Person rdf:type owl:Class .
:Bob rdf:type owl:NamedIndividual ,
:Person ;
:traveledTo :London ,
:Ottawa ,
:Paris .
:Brussels rdf:type owl:NamedIndividual ,
:City .
:London rdf:type owl:NamedIndividual ,
:City .
:Ottawa rdf:type owl:NamedIndividual ,
:City .
:Paris rdf:type owl:NamedIndividual ,
:City .
:Ralph rdf:type owl:NamedIndividual ,
:Person ;
:traveledTo :Rome .
:Rome rdf:type owl:NamedIndividual ,
:City .
:Washington rdf:type owl:NamedIndividual ,
:City .
我尝试添加以下内容 Class 但它似乎不起作用:
:WorldTraveler rdf:type owl:Class ;
owl:equivalentClass [ owl:intersectionOf ( :Person
[ rdf:type owl:Restriction ;
owl:onProperty :traveledTo ;
owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
owl:onClass :City
]
) ;
rdf:type owl:Class
] .
我相信由于开放世界的假设,我的推理者可能无法推断出拉尔夫不是 WorldTraveler。但是,应该可以推断出Bob是WorldTraveler,因为他去过3个城市。
感谢您的帮助。
克里斯
除了开放世界假设(OWA)之外,还有唯一名称假设(UNA)。 OWL 是前者 (OWA) 而 不是 是后者 (UNA)。
你应该明确地让个人与众不同。
在 Turtle 语法中,它应该如下所示:
:London owl:differentFrom :Paris .
或
[ rdf:type owl:AllDifferent ;
owl:distinctMembers ( :Brussels :London :Ottawa :Paris :Rome :Washington )
] .
我有一个 ontology 人和城市 classes。人们去城市旅行,这种旅行在 traveledTo 对象 属性 中表示。我想添加一个 WorldTraveler class。如果人们去过 2 个或更多城市,那么他们就是世界旅行者。我如何在我的 ontology 中执行此操作?
@prefix : <http://www.semanticweb.org/chris/ontologies/2017/9/untitled-ontology-64#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/chris/ontologies/2017/9/untitled-ontology-64> .
<http://www.semanticweb.org/chris/ontologies/2017/9/untitled-ontology-64> rdf:type owl:Ontology .
:traveledTo rdf:type owl:ObjectProperty ;
rdfs:domain :Person ;
rdfs:range :City .
:City rdf:type owl:Class .
:Person rdf:type owl:Class .
:Bob rdf:type owl:NamedIndividual ,
:Person ;
:traveledTo :London ,
:Ottawa ,
:Paris .
:Brussels rdf:type owl:NamedIndividual ,
:City .
:London rdf:type owl:NamedIndividual ,
:City .
:Ottawa rdf:type owl:NamedIndividual ,
:City .
:Paris rdf:type owl:NamedIndividual ,
:City .
:Ralph rdf:type owl:NamedIndividual ,
:Person ;
:traveledTo :Rome .
:Rome rdf:type owl:NamedIndividual ,
:City .
:Washington rdf:type owl:NamedIndividual ,
:City .
我尝试添加以下内容 Class 但它似乎不起作用:
:WorldTraveler rdf:type owl:Class ;
owl:equivalentClass [ owl:intersectionOf ( :Person
[ rdf:type owl:Restriction ;
owl:onProperty :traveledTo ;
owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
owl:onClass :City
]
) ;
rdf:type owl:Class
] .
我相信由于开放世界的假设,我的推理者可能无法推断出拉尔夫不是 WorldTraveler。但是,应该可以推断出Bob是WorldTraveler,因为他去过3个城市。
感谢您的帮助。
克里斯
除了开放世界假设(OWA)之外,还有唯一名称假设(UNA)。 OWL 是前者 (OWA) 而 不是 是后者 (UNA)。
你应该明确地让个人与众不同。
在 Turtle 语法中,它应该如下所示:
:London owl:differentFrom :Paris .
或
[ rdf:type owl:AllDifferent ;
owl:distinctMembers ( :Brussels :London :Ottawa :Paris :Rome :Washington )
] .