我在下面有OWL的这个例子,我想知道如何为" unionOf"
启动和创建一个实例(个体)我想知道如何制作这个
的实例<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#" >
<owl:Class rdf:ID="house" />
<owl:Class rdf:ID="room" />
<owl:Class rdf:ID="kitchen" />
<owl:Class rdf:ID="garden" />
<owl:Class rdf:ID="table" />
<owl:Class rdf:ID="chair" />
<owl:ObjectProperty rdf:about="house_composedBy">
<rdfs:domain rdf:resource="#house"/>
<rdfs:range>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="room" />
<owl:Class rdf:about="kitchen" />
<owl:Class rdf:about="garden" />
</owl:unionOf>
</owl:Class>
</rdfs:range>
</owl:ObjectProperty>
我是这样开始的,但我停了下来,因为如果我不知道其类型,我就不知道我要添加哪个对象。
示例,
<u:house rdf:ID="p_house01">
<u:house_composedBy about="room01" />
<u:house_composedBy about="room02" />
<u:house_composedBy about="kitchen" />
<u:house_composedBy about="garden" />
</u:house>
我现在还不知道如何区分个体,是不是用unionOf做到这一点的正确方法?
问候。
答案 0 :(得分:4)
虽然我的其余部分将解决您如何创建联合类的实例,但我认为您应该考虑您正在执行此操作的原因。如果这与您之前的问题uml Composition relationships to RDF and OWL相关,这似乎很可能,并且您试图说明属性的范围是联合类,例如
hasComponent rdfs:range(TypeA或TypeB)
你不需要声明某些单独的x是类型(TypeA或TypeB),以便将它用作hasComponent语句的对象。反之。这里所有的rdfs:range声明都能让你能够观察语句
y hasComponent x
从推断
x rdf:type(TypeA或TypeB)
您无需事先在x上声明任何类型。域和范围声明允许您根据它们在断言中的使用方式推断事物的类型;它们不提供任何一致性强制或完整性约束。
我不确定你究竟在问什么(你是否正在尝试生成某些公理的RDF / XML序列化,或者是什么),但我认为我们可以找到解决方案。 WingProtégé,很容易创建一个人,并声明它具有某种类型的联合类。例如,我们可以断言
x:或 B 或 C
在Protégé:
我们可以看一下这个OWL本体的RDF序列化。如果你因为某些原因需要手工编写,那么Turtle序列化是最容易阅读的,也是最容易编写的:
@prefix : <http://www.example.org/unionof-example#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
## Ontology declaration
<http://www.example.org/unionof-example>
a owl:Ontology .
## Three classes
:A a owl:Class .
:B a owl:Class .
:C a owl:Class .
## x is a thing, a named individual, and
## an (A or B or C).
:x a owl:Thing , owl:NamedIndividual ;
a [ a owl:Class ;
owl:unionOf ( :A :B :C )
] .
如果你真的需要这个RDF / XML,那只是RDF图的另一个序列化:
<rdf:RDF
xmlns="http://www.example.org/unionof-example#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://www.example.org/unionof-example"/>
<owl:Class rdf:about="http://www.example.org/unionof-example#A"/>
<owl:Class rdf:about="http://www.example.org/unionof-example#B"/>
<owl:Class rdf:about="http://www.example.org/unionof-example#C"/>
<owl:Thing rdf:about="http://www.example.org/unionof-example#x">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NamedIndividual"/>
<rdf:type>
<owl:Class>
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="http://www.example.org/unionof-example#A"/>
<owl:Class rdf:about="http://www.example.org/unionof-example#B"/>
<owl:Class rdf:about="http://www.example.org/unionof-example#C"/>
</owl:unionOf>
</owl:Class>
</rdf:type>
</owl:Thing>
</rdf:RDF>
您可能也对该非缩写序列化感兴趣。它更冗长,人性化程度更低,但如果你正在做的话,手写的可能会更容易一些:
<rdf:RDF
xmlns="http://www.example.org/unionof-example#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" >
<rdf:Description rdf:about="http://www.example.org/unionof-example#A">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
<rdf:Description rdf:nodeID="A0">
<rdf:first rdf:resource="http://www.example.org/unionof-example#B"/>
<rdf:rest rdf:nodeID="A1"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/unionof-example#B">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
<rdf:Description rdf:nodeID="A2">
<rdf:first rdf:resource="http://www.example.org/unionof-example#A"/>
<rdf:rest rdf:nodeID="A0"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/unionof-example#C">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
<rdf:Description rdf:nodeID="A3">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<owl:unionOf rdf:nodeID="A2"/>
</rdf:Description>
<rdf:Description rdf:nodeID="A1">
<rdf:first rdf:resource="http://www.example.org/unionof-example#C"/>
<rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/unionof-example">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Ontology"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.example.org/unionof-example#x">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#NamedIndividual"/>
<rdf:type rdf:nodeID="A3"/>
</rdf:Description>
</rdf:RDF>