Зачем вам нужны экземпляры класса union?
Хотя остальная часть моего ответа будет посвящена тому, как вы можете создавать экземпляры класса объединения, я думаю, что вы должны учитывать причину, по которой вы это делаете. Если это связано с вашим предыдущим вопросом, отношение композиции uml к RDF и OWL, что кажется вероятным, и вы пытаетесь сказать, что диапазон свойства является классом объединения, например,
hasComponent rdfs:диапазон (TypeA или TypeB)
вам не нужно объявлять, что некоторый отдельный x имеет тип (TypeA или TypeB), чтобы использовать его в качестве объекта инструкции hasComponent. Напротив. Все объявление rdfs:range здесь дает вам возможность наблюдать оператор
у имеет компонент х
и сделать из этого вывод, что
x rdf:тип (TypeA или TypeB)
Вам не нужно заранее объявлять какой-либо тип для x. Объявления домена и диапазона позволяют вам выводить типы вещей на основе того, как они используются в утверждениях; они не обеспечивают какого-либо обеспечения согласованности или ограничений целостности.
Как вы можете их создать
Я не уверен, о чем именно вы спрашиваете (пытаетесь ли вы сгенерировать RDF/XML-сериализацию некоторых аксиом или что-то еще), но я думаю, что мы можем найти решение. Используя Protégé, легко создать индивидуума и объявить, что он имеет в качестве типа какой-либо класс объединения. Например, мы можем утверждать, что
x : A или B или C
в Протеже:
Мы можем взглянуть на сериализацию RDF этой онтологии OWL. Сериализацию 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>
21.02.2014