1. Model the following ontology in OWL using RDF-XML: An Online Store sells Products.
Products include Electronics and Clothing. Electronics can be Mobile or Laptop. Products
have features like Brand, Price, and Warranty. Customers can be Premium or Regular.
Include object property ,datatype property ,disjoint, complement and somevaluesfrom
elements in OWL.
Ans:
• Class hierarchy: Product → Electronics/Clothing → Mobile/Laptop
• Object property: sells (OnlineStore → Product)
• Datatype properties: hasBrand, hasPrice, hasWarranty
• Disjoint classes: Electronics vs Clothing, Mobile vs Laptop, Premium vs Regular
• Complement: NonPremiumCustomer = NOT PremiumCustomer
• Restriction (someValuesFrom): BrandedProduct must have at least one
brand value
<?xml version="1.0"?>
<rdf:RDF xmlns="[Link]
xml:base="[Link]
xmlns:rdf="[Link]
xmlns:owl="[Link]
xmlns:xsd="[Link]
xmlns:rdfs="[Link]
<!-- Ontology -->
<owl:Ontology rdf:about="[Link]
<!-- Classes -->
<owl:Class rdf:about="#OnlineStore"/>
<owl:Class rdf:about="#Product"/>
<owl:Class rdf:about="#Electronics">
<rdfs:subClassOf rdf:resource="#Product"/>
</owl:Class>
<owl:Class rdf:about="#Clothing">
<rdfs:subClassOf rdf:resource="#Product"/>
</owl:Class>
<owl:Class rdf:about="#Mobile">
<rdfs:subClassOf rdf:resource="#Electronics"/>
</owl:Class>
<owl:Class rdf:about="#Laptop">
<rdfs:subClassOf rdf:resource="#Electronics"/>
</owl:Class>
<!-- Customers -->
<owl:Class rdf:about="#Customer"/>
<owl:Class rdf:about="#PremiumCustomer">
<rdfs:subClassOf rdf:resource="#Customer"/>
</owl:Class>
<owl:Class rdf:about="#RegularCustomer">
<rdfs:subClassOf rdf:resource="#Customer"/>
</owl:Class>
<!-- Disjoint Classes -->
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#Electronics"/>
<rdf:Description rdf:about="#Clothing"/>
</owl:members>
</owl:AllDisjointClasses>
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#Mobile"/>
<rdf:Description rdf:about="#Laptop"/>
</owl:members>
</owl:AllDisjointClasses>
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#PremiumCustomer"/>
<rdf:Description rdf:about="#RegularCustomer"/>
</owl:members>
</owl:AllDisjointClasses>
<!-- Complement Class -->
<owl:Class rdf:about="#NonPremiumCustomer">
<owl:complementOf rdf:resource="#PremiumCustomer"/>
</owl:Class>
<!-- Object Property -->
<owl:ObjectProperty rdf:about="#sells">
<rdfs:domain rdf:resource="#OnlineStore"/>
<rdfs:range rdf:resource="#Product"/>
</owl:ObjectProperty>
<!-- Datatype Properties -->
<owl:DatatypeProperty rdf:about="#hasBrand">
<rdfs:domain rdf:resource="#Product"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasPrice">
<rdfs:domain rdf:resource="#Product"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasWarranty">
<rdfs:domain rdf:resource="#Product"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<!-- someValuesFrom Restriction -->
<owl:Class rdf:about="#BrandedProduct">
<rdfs:subClassOf rdf:resource="#Product"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasBrand"/>
<owl:someValuesFrom
rdf:resource="[Link]
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
2. Model the following ontology in OWL using RDF/XML:
A University offers Courses. Courses include ScienceCourses and ArtsCourses.
ScienceCourses can be Physics or ComputerScience. Courses have features like
CourseName, Credits, and Duration. Students can be Undergraduate or
Postgraduate.
Include the following in your OWL model:
1. Object property
2. Datatype property
3. Disjoint classes
4. Complement class
5. someValuesFrom restriction
Ans:
<?xml version="1.0"?>
<rdf:RDF xmlns="[Link]
xml:base="[Link]
xmlns:rdf="[Link]
xmlns:owl="[Link]
xmlns:xsd="[Link]
xmlns:rdfs="[Link]
<!-- Ontology -->
<owl:Ontology rdf:about="[Link]
<!-- Classes -->
<owl:Class rdf:about="#University"/>
<owl:Class rdf:about="#Course"/>
<owl:Class rdf:about="#ScienceCourse">
<rdfs:subClassOf rdf:resource="#Course"/>
</owl:Class>
<owl:Class rdf:about="#ArtsCourse">
<rdfs:subClassOf rdf:resource="#Course"/>
</owl:Class>
<owl:Class rdf:about="#Physics">
<rdfs:subClassOf rdf:resource="#ScienceCourse"/>
</owl:Class>
<owl:Class rdf:about="#ComputerScience">
<rdfs:subClassOf rdf:resource="#ScienceCourse"/>
</owl:Class>
<!-- Students -->
<owl:Class rdf:about="#Student"/>
<owl:Class rdf:about="#Undergraduate">
<rdfs:subClassOf rdf:resource="#Student"/>
</owl:Class>
<owl:Class rdf:about="#Postgraduate">
<rdfs:subClassOf rdf:resource="#Student"/>
</owl:Class>
<!-- Disjoint Classes -->
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#ScienceCourse"/>
<rdf:Description rdf:about="#ArtsCourse"/>
</owl:members>
</owl:AllDisjointClasses>
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#Physics"/>
<rdf:Description rdf:about="#ComputerScience"/>
</owl:members>
</owl:AllDisjointClasses>
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#Undergraduate"/>
<rdf:Description rdf:about="#Postgraduate"/>
</owl:members>
</owl:AllDisjointClasses>
<!-- Complement Class -->
<owl:Class rdf:about="#NonPostgraduate">
<owl:complementOf rdf:resource="#Postgraduate"/>
</owl:Class>
<!-- Object Property -->
<owl:ObjectProperty rdf:about="#offers">
<rdfs:domain rdf:resource="#University"/>
<rdfs:range rdf:resource="#Course"/>
</owl:ObjectProperty>
<!-- Datatype Properties -->
<owl:DatatypeProperty rdf:about="#hasCourseName">
<rdfs:domain rdf:resource="#Course"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasCredits">
<rdfs:domain rdf:resource="#Course"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasDuration">
<rdfs:domain rdf:resource="#Course"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<!-- someValuesFrom Restriction -->
<owl:Class rdf:about="#CreditCourse">
<rdfs:subClassOf rdf:resource="#Course"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasCredits"/>
<owl:someValuesFrom rdf:resource="[Link]
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
Healthcare System
Model the following ontology in OWL using RDF/XML:
A Hospital treats Patients. Patients can be InPatient or OutPatient. Hospitals have
Doctors, and Doctors can be Surgeon or Physician. Patients have attributes like Name, Age,
and Diagnosis.
Include:
3. Object property
4. Datatype property
5. Disjoint classes
6. Complement class
7. someValuesFrom restriction
Ans:
<?xml version="1.0"?>
<rdf:RDF xmlns="[Link]
xml:base="[Link]
xmlns:rdf="[Link]
xmlns:owl="[Link]
xmlns:xsd="[Link]
xmlns:rdfs="[Link]
<!-- Ontology -->
<owl:Ontology rdf:about="[Link]
<!-- Classes -->
<owl:Class rdf:about="#Hospital"/>
<owl:Class rdf:about="#Patient"/>
<owl:Class rdf:about="#InPatient">
<rdfs:subClassOf rdf:resource="#Patient"/>
</owl:Class>
<owl:Class rdf:about="#OutPatient">
<rdfs:subClassOf rdf:resource="#Patient"/>
</owl:Class>
<owl:Class rdf:about="#Doctor"/>
<owl:Class rdf:about="#Surgeon">
<rdfs:subClassOf rdf:resource="#Doctor"/>
</owl:Class>
<owl:Class rdf:about="#Physician">
<rdfs:subClassOf rdf:resource="#Doctor"/>
</owl:Class>
<!-- Disjoint Classes -->
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#InPatient"/>
<rdf:Description rdf:about="#OutPatient"/>
</owl:members>
</owl:AllDisjointClasses>
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#Surgeon"/>
<rdf:Description rdf:about="#Physician"/>
</owl:members>
</owl:AllDisjointClasses>
<!-- Complement Class -->
<owl:Class rdf:about="#NonInPatient">
<owl:complementOf rdf:resource="#InPatient"/>
</owl:Class>
<!-- Object Properties -->
<owl:ObjectProperty rdf:about="#treats">
<rdfs:domain rdf:resource="#Hospital"/>
<rdfs:range rdf:resource="#Patient"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#hasDoctor">
<rdfs:domain rdf:resource="#Hospital"/>
<rdfs:range rdf:resource="#Doctor"/>
</owl:ObjectProperty>
<!-- Datatype Properties -->
<owl:DatatypeProperty rdf:about="#hasName">
<rdfs:domain rdf:resource="#Patient"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasAge">
<rdfs:domain rdf:resource="#Patient"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasDiagnosis">
<rdfs:domain rdf:resource="#Patient"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<!-- someValuesFrom Restriction -->
<owl:Class rdf:about="#DiagnosedPatient">
<rdfs:subClassOf rdf:resource="#Patient"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasDiagnosis"/>
<owl:someValuesFrom rdf:resource="[Link]
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>
4. Banking System: Model the following ontology in OWL using RDF/XML:
A Bank manages Accounts. Accounts can be SavingsAccount or CurrentAccount. Customers can be
IndividualCustomer or BusinessCustomer. Accounts have attributes like AccountNumber, Balance,
and InterestRate.
Include:
Object property
Datatype property
Disjoint classes
Complement class
someValuesFrom restriction
Ans:
<?xml version="1.0"?>
<rdf:RDF xmlns="[Link]
xml:base="[Link]
xmlns:rdf="[Link]
xmlns:owl="[Link]
xmlns:xsd="[Link]
xmlns:rdfs="[Link]
<!-- Ontology -->
<owl:Ontology rdf:about="[Link]
<!-- Classes -->
<owl:Class rdf:about="#Bank"/>
<owl:Class rdf:about="#Account"/>
<owl:Class rdf:about="#SavingsAccount">
<rdfs:subClassOf rdf:resource="#Account"/>
</owl:Class>
<owl:Class rdf:about="#CurrentAccount">
<rdfs:subClassOf rdf:resource="#Account"/>
</owl:Class>
<owl:Class rdf:about="#Customer"/>
<owl:Class rdf:about="#IndividualCustomer">
<rdfs:subClassOf rdf:resource="#Customer"/>
</owl:Class>
<owl:Class rdf:about="#BusinessCustomer">
<rdfs:subClassOf rdf:resource="#Customer"/>
</owl:Class>
<!-- Disjoint Classes -->
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#SavingsAccount"/>
<rdf:Description rdf:about="#CurrentAccount"/>
</owl:members>
</owl:AllDisjointClasses>
<owl:AllDisjointClasses>
<owl:members rdf:parseType="Collection">
<rdf:Description rdf:about="#IndividualCustomer"/>
<rdf:Description rdf:about="#BusinessCustomer"/>
</owl:members>
</owl:AllDisjointClasses>
<!-- Complement Class -->
<owl:Class rdf:about="#NonSavingsAccount">
<owl:complementOf rdf:resource="#SavingsAccount"/>
</owl:Class>
<!-- Object Property -->
<owl:ObjectProperty rdf:about="#manages">
<rdfs:domain rdf:resource="#Bank"/>
<rdfs:range rdf:resource="#Account"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="#hasCustomer">
<rdfs:domain rdf:resource="#Account"/>
<rdfs:range rdf:resource="#Customer"/>
</owl:ObjectProperty>
<!-- Datatype Properties -->
<owl:DatatypeProperty rdf:about="#hasAccountNumber">
<rdfs:domain rdf:resource="#Account"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasBalance">
<rdfs:domain rdf:resource="#Account"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="#hasInterestRate">
<rdfs:domain rdf:resource="#Account"/>
<rdfs:range rdf:resource="[Link]
</owl:DatatypeProperty>
<!-- someValuesFrom Restriction -->
<owl:Class rdf:about="#ActiveAccount">
<rdfs:subClassOf rdf:resource="#Account"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasBalance"/>
<owl:someValuesFrom rdf:resource="[Link]
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
</rdf:RDF>