Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yasenstar/protege_pizza

Practice building pizza.owl ontology using Protege modeling tool, base on Michael DeBillis' great guide.
https://github.com/yasenstar/protege_pizza

Last synced: 6 days ago
JSON representation

Practice building pizza.owl ontology using Protege modeling tool, base on Michael DeBillis' great guide.

Awesome Lists containing this project

README

        

# Ontology: Pizza.owl using Protégé

Practice building pizza.owl ontology using Protege modeling tool, base on [Michael DeBillis](https://www.linkedin.com/in/michael-debellis-85329/)' great guide.

[Here](https://www.michaeldebellis.com/post/protegetutorialyoutubeplaylist) you can find the post by Michael in his site; and the [introduction](https://www.michaeldebellis.com/post/new-protege-pizza-tutorial) of the guide.

## About this repository

The repository is regularly synced to Gitee:

- Link of Repository in Github: https://github.com/yasenstar/protege_pizza
- Link of Repository in Gitee: https://gitee.com/yasenstar/protege_pizza

## Structure of pizza.owl

Refer to the [mindmap file](pizza.owl%20tutorial.mm) here (note: get FreePlane to open the mindmap):

![mindmap](img/pizza_tutorial.jpg)

## Ontologies inside Semantics Concept

![ontology-clipart](img/ontology.png)

Source from post of [Malcolm Chirholm Ph.D.](https://www.linkedin.com/in/malcolmchisholm?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAALGOX0Byp8PZaGgklIEBK0daX9A9WtjIQM&lipi=urn%3Ali%3Apage%3Ad_flagship3_feed%3BYN15qj%2FISRyjIwyAgQtkjQ%3D%3D)

| Terms | Description |
| -------------- | ------------------------------------------------------------------------------------------------------------------- |
| Ontologies | Each is a "view" of the business world (and business information) that is required to meet a specific business need |
| Business Rules | Atomic units of logic that govern behavior of concepts and relationships |
| Relationships | Other business relationships outside taxonomies and hierarchies |
| Hierarchies | How individual things (instances) are associated at multiple levels for specific businees needs |
| Taxonimies | The relationships of general with specific concepts |
| Definitions | Descriptions of the concepts identified by the terms |
| Terms | The specialized terms used in the business, with homonyms, synonyms, and universes of discourse identified |

## Learn Ontologies from pizza.owl

Thanks for Michael DeBellis's great tutorial on pizza.owl, which is helping to understand the key concepts of ontology and also a way of building practices.

This repository is tracking my hands-on modeling the pizza.owl in step-by-step manner, and you can find the snapshot ontology model files in every step so that you can start your practice from any point.

## Why Protégé?

![protege-logo](img/protege_logo.png)

Check [Protege Website](https://protege.stanford.edu/), you can find below statements:

*Protégé’s plug-in architecture can be adapted to build both simple and complex ontology-based applications. Developers can integrate the output of Protégé with rule systems or other problem solvers to construct a wide range of intelligent systems. Most important, the Stanford team and the vast Protégé community are here to help.*

I'm using Protégé to learn pizza.owl and also practice the modeling skill here.

Some reference quick link about Protégé:

- [WebProtégé](http://webprotege.stanford.edu/)
- [Download Windows Version 5.6.1](https://protege.stanford.edu/software.php), also have Java package for platform independent installating.
- [Protégé wiki](https://protegewiki.stanford.edu/wiki/Main_Page)
- [Protégé in Github](https://github.com/protegeproject), from here you can get latest version

## Pizza.OWL Modeling Video List

Please follow my [Youtube Channel](https://www.youtube.com/channel/UCTshmTJGpJunOz23vCEhzWg).

![pizza](img/pizza.png)

| Video Title | Link in YouTube | Link in bilibili | 西瓜视频 ixigua |
| --- | --- | --- | --- |
| 01 - Introduction | [link](https://youtu.be/l0PZhqmTwfM) | [link](https://www.bilibili.com/video/BV1Tu4y1J75J/) | [link](https://www.ixigua.com/7297974941184918043?id=7298015845224186407&logTag=31921fb2e519fbf7e1f0) |
| 02 - Practice Guide Document Structure | [link](https://youtu.be/eWx9_zJkiUY) | [link](https://www.bilibili.com/video/BV1684y1X7NG/) | [link](https://www.ixigua.com/7297974941184918043?id=7298029025333608971&logTag=ba97105d8bb3651a9b9c) |
| 03 - Installing Protege and understand Protege User Interface | [link](https://youtu.be/Q6eq-cWBpfQ) | [link](https://www.bilibili.com/video/BV1JN41137Cq/) | [link](https://www.ixigua.com/7297974941184918043?id=7298056855010411008&logTag=f799baea71f97be34293) |
| 04 - Create new Ontology (exercise 01~03) | [link](https://youtu.be/IMjKcx93ens) | [link](https://www.bilibili.com/video/BV1V84y1X73Y/) | [link](https://www.ixigua.com/7297974941184918043?id=7298153304281285160&logTag=fe79ee62bfc50686f0fa) |
| 05 - Named Classes (section 4.1, exercise 04) | [link](https://youtu.be/QqVrFxaEFrI) | [link](https://www.bilibili.com/video/BV1oj411e7Ki/) | [link](https://www.ixigua.com/7297974941184918043?id=7298156434955600434&logTag=8e71b7a1b729a483bd72) |
| 06 - Using a Reasoner (section 4.2, exercise 05) | [link](https://youtu.be/TKMW5udKzIM) | [link](https://www.bilibili.com/video/BV1oe411Q7E7/) | [link](https://www.ixigua.com/7297974941184918043?id=7298160917571863075&logTag=541025cd8aebf8ecd56e) |
| 07 - Disjoint Classes (section 4.3, exercise 06) | [link](https://youtu.be/g7aoDsS5kSI) | [link](https://www.bilibili.com/video/BV15w411M7q3/) | [link](https://www.ixigua.com/7297974941184918043?id=7298164170305110567&logTag=1a678d47364687f06aa4) |
| 08 - Understand RDF Ontology File Structure | [link](https://youtu.be/qjer-vEKMNg) | [link](https://www.bilibili.com/video/BV1XN4y1678S/) | [link](https://www.ixigua.com/7297974941184918043?id=7298165759811781146&logTag=d1b9a74b19ef5b5bbcac) |
| 09 - Using Create Class Hierarchy (section 4.4, exercise 07~08) | [link](https://youtu.be/FQdjYQMqfBI) | [link](https://www.bilibili.com/video/BV16c41197Lo/) | [link](https://www.ixigua.com/7297974941184918043?id=7298166575092204069&logTag=3c36893d9e941298a3a9) |
| 10 - Object Properties | [link](https://youtu.be/4DfR06bI500) | [link](https://www.bilibili.com/video/BV1UC4y1J7Mf/) | [link](https://www.ixigua.com/7297974941184918043?id=7298167179604820492&logTag=f12857af843d411c0db4) |
| 11 - Inverse Properties | [link](https://youtu.be/cqQ8uqRjhNQ) | [link](https://www.bilibili.com/video/BV1JC4y1J7HP/) | [link](https://www.ixigua.com/7297974941184918043?id=7298170803772883465&logTag=acb1cf05fc425dcf7888) |
| 12 - OWL Object Property Characteristics | [link](https://youtu.be/bYx0LPxXAk8) | [link](https://www.bilibili.com/video/BV1W84y1Q7io/) | [link](https://www.ixigua.com/7297974941184918043?id=7298171550518215187&logTag=6cc6813ddc936b16b84c) |
| 13 - OWL Property Domains and Ranges | [link](https://youtu.be/gE_kKvS-R5o) | [link](https://www.bilibili.com/video/BV1tw411s7Mg/) | [link](https://www.ixigua.com/7297974941184918043?id=7298174459670856229&logTag=494e353c69593fb7958f) |
| 14 - Existential Restriction | [link](https://youtu.be/KG4D5PEhCKE) | [link](https://www.bilibili.com/video/BV1Bw411M7cB/) | [link](https://www.ixigua.com/7297974941184918043?id=7298175213974487571&logTag=1ed613537090e9351da2) |
| 15 - Exercise 14: Create Subclasses of Pizza: NamedPizza and MargheritaPizza | [link](https://youtu.be/tN5l1JjVVMw) | | [link](https://www.ixigua.com/7297974941184918043?id=7298175615776391721&logTag=00d714b79aae59fcacad) |
| 16 - Exercise 15: Create Restrictions that define a MargheritaPizza | [link](https://youtu.be/zpw9knBt8Zw) | | [link](https://www.ixigua.com/7297974941184918043?id=7298176554369024512&logTag=082c4abef521f4e920a4) |
| 17 - Exercise 16: Create AmericanaPizza by Cloning MargheritaPizza and Adding Additional Restrictions | [link](https://youtu.be/sBm0Lz0vnP4) | | [link](https://www.ixigua.com/7297974941184918043?id=7298341492614464052&logTag=f917c05e831168a26963) |
| 18 - Exercise 17: Create AmericanaHotPizza and SohoPizza | [link](https://youtu.be/qISxhDleqf8) | | [link](https://www.ixigua.com/7297974941184918043?id=7298342001030726153&logTag=9c68acd18885b4451f7d) |
| 19 - Exercise 18: Make Subclasses of NamedPizza Disjoint | [link](https://youtu.be/TZdaSRDWKm8) | | [link](https://www.ixigua.com/7297974941184918043?id=7298342347199545875&logTag=b19fc60a078c78a2b592) |
| 20 - Exercise 19: Add a Probe Class called ProbeInconsistentTopping | [link](https://youtu.be/Gq3-zWinu1c) | | [link](https://www.ixigua.com/7297974941184918043?id=7298342691329442367&logTag=48bed6e7732529685d3a) |
| 21 - Primitive Classes - Exercise 20: Create the CheesyPizza class | [link](https://youtu.be/Bkb7DdBWGNw) | | [link](https://www.ixigua.com/7297974941184918043?id=7298347637324022272&logTag=5929958c3c636765732c) |
| 22 - Exercise 21: Convert CheesyPizza from a Primitive Class to a Defined Class | [link](https://youtu.be/x5_83xGCrZc) | | [link](https://www.ixigua.com/7297974941184918043?id=7298348914351178249&logTag=bdf21943c8485515a1ed) |
| 23 - Universal Restrictions (exercise 22: Create a Defined Class called VegetarianPizza) | [link](https://youtu.be/rO195cLbwS4) | | [link](https://www.ixigua.com/7297974941184918043?id=7298351738804044328&logTag=3fa5f656ff2198f6cc3a) |
| 24 - Automated Classification and Open World Reasoning (exercise 23) | [link](https://youtu.be/s5wx6vQg650) | | [link](https://www.ixigua.com/7297974941184918043?id=7298356020256965147&logTag=38db9ec2330227a638f6) |
| 25 - Defining an Enumerated Class (exercise 24) | [link](https://youtu.be/ZNodw2fYxy0) | | [link](https://www.ixigua.com/7297974941184918043?id=7298360498784109083&logTag=54ed29fce3ebb8070f00) |
| 26 - Adding Spiciness as a Property (Exercise 25: Create and Use the hasSpiciness Property) | [link](https://youtu.be/ClmDiKU1VlY) | | [link](https://www.ixigua.com/7297974941184918043?id=7298364613467800101&logTag=06c492ab306c586b5196) |
| 27 - Cartinality Restrictions (exercise 26: Create an InterestingPizza that has at least three toppings) | [link](https://youtu.be/efCHZ0q771A) | | [link](https://www.ixigua.com/7297974941184918043?id=7298377857863156235&logTag=cf99ddd216d915e69c46) |
| 28 - Defining a Data Property (Exercise 27: Create a Datatype Property called hasCaloricContent) | [link](https://youtu.be/0Y1-SQ_sU9g) | | [link](https://www.ixigua.com/7297974941184918043?id=7298378170242171431&logTag=b9d052fcf55b023c793d) |
| 29 - Customize Protege UI (exercise 28 and 29) | [link](https://youtu.be/fTrWQE6y3Os) | | [link](https://www.ixigua.com/7297974941184918043?id=7298378700201361920&logTag=a18e027987f6ec1c552c) |
| 30 -Customize Protege UI (exercise 30) | [link](https://youtu.be/bun_1B5T27M) | | [link](https://www.ixigua.com/7297974941184918043?id=7298379529889055295&logTag=0c219116a02a22c1a42c) |
| 31 - Create a Datatype Restriction that Every Pizza hasCaloricContent | [link](https://youtu.be/QUGmmfKWdHE) | | [link](https://www.ixigua.com/7297974941184918043?id=7298379908911202866&logTag=7e8c437603d4e3bc9b23) |
| 32 - Create a HighCaloriePizza Defined Class | [link](https://youtu.be/fqpcYCD4rRE) | | [link](https://www.ixigua.com/7297974941184918043?id=7298380484155966002&logTag=dd7f65a2d74733c2fa25) |
| 33 - Adding Order to an Enumerated Class | [link](https://youtu.be/5m2qRSrUAe8) | | [link](https://www.ixigua.com/7297974941184918043?id=7298381978783449634&logTag=353c2fb79a81b77016d5) |
| 34 - Names and Namespaces in Ontology (demo only) | [link](https://youtu.be/7PPJPoJCFfE) | | [link](https://www.ixigua.com/7297974941184918043?id=7298382522227163686&logTag=b1094e275ecab062f422) |
| 35 - Chapter 8 A Larger Ontology with some Individuals | [link](https://youtu.be/l-mY5urfE7k) | | [link](https://www.ixigua.com/7297974941184918043?id=7298384886082044451&logTag=ead670f89c91f7de778e) |
| 36 - Ontology Query using DL (Exercise 33: Try Some Description Logic Queries) | [link](https://youtu.be/3cwlMMQSPcA) | | [link](https://www.ixigua.com/7297974941184918043?&&id=7298385379907142207) |
| 37 - Ontology Query using SPARQL | [link](https://youtu.be/kK5iLNNqZnc) | | [link](https://www.ixigua.com/7297974941184918043?id=7298386588231270946&logTag=b68703a81ec0139352bd) |
| 38 - Exercise 34: Write Your First SWRL Rule | [link](https://youtu.be/bk5KrQIs6eU) | | [link](https://www.ixigua.com/7297974941184918043?id=7298387320871485991&logTag=09d147f3e74f91f8e6c5) |
| 39 - SWRL Tip Remove Ontology Prefixes from SWRL Rules |[link](https://youtu.be/1OrvhURYYA0) | | [link](https://www.ixigua.com/7297974941184918043?id=7298387985643668018&logTag=5bcbc5dcd2e33d8a3db4) |
| 40 - Exercise 35: Write Another SWRL Rule | [link](https://youtu.be/dBrBWqkuSog) | | [link](https://www.ixigua.com/7297974941184918043?id=7298388914745082409&logTag=cfae7473a203994f3056) |
| 41 - SQWRL Rules ex36 Write a SQWRL Rule | [link](https://youtu.be/eAZVmZa1Qpo) | | [link](https://www.ixigua.com/7297974941184918043?id=7298393066484793896&logTag=bbad49aabd05df2c5ce8) |
| 42 - SHACL | [link](https://youtu.be/hatOoDLN7CE) | | [link](https://www.ixigua.com/7297974941184918043?id=7298394490245644834&logTag=f3133bf7e3606b8c2931) |
| 43 - WebProtege (Part 1) | [link](https://youtu.be/zPSFoPY9vGM) | | [link](https://www.ixigua.com/7297974941184918043?id=7298395061039923712&logTag=31431f458c4079451dfb) |
| 44 - WebProtege (Part 2) | [link](https://youtu.be/xAOgKmHoeeQ) | | [link](https://www.ixigua.com/7297974941184918043?id=7298401226969285170&logTag=dea21c8b46fc1b70a885)|
| 45 - WebVOWL | [link](https://youtu.be/2B5tvHAZICs) | | [link](https://www.ixigua.com/7297974941184918043?id=7298401644776489524&logTag=f73ea218fae90c544322) |
| 46 - Query by SPARQL (revised) | | | [link](https://www.ixigua.com/7298402070661759522?logTag=89af7afd975fdc6a6765) |

## Ontology Reasoner Reference

- [HermiT OWL Reasoner](http://www.hermit-reasoner.com/)
- [Pellet OWL DL reasoner for Java, from Stardog](https://github.com/stardog-union/pellet)

## Ontology Querying

### Description Logic Query (DL)

- [An Introduction to Description Logics and Query Rewriting](https://www.dcs.bbk.ac.uk/~roman/papers/RW12014.pdf), also available in the [repository folder](ontology_query/DL/RW12014_An%20Introduction%20to%20Description%20Logics%20and%20Query%20Rewriting.pdf)
- [A Description Logic Primer](https://arxiv.org/pdf/1201.4089.pdf)
- [Reasoning in Description Logics](ontology_query/DL/Reasoning%20in%20Description%20Logics.pdf)

### SQWRL

- [SQWRL_a_query_language_for_OWL](ontology_query/SQWRL/SQWRL_a_query_language_for_OWL.pdf)

## Visualized our Ontology Model

View [here](https://service.tib.eu/webvowl/#iri=https://yasenstar.github.io/protege_pizza/MyPizzaTutorial.rdf) which powered by [WebVOWL](http://vowl.visualdataweb.org/webvowl.html).

---

If you find the information here is interesting or useful, please consider [**donate $1 dollar**](https://paypal.me/zhaoxiaoqi/1) (secure Paypal link) for a coffee, thanks and enjoy!

Hope you can get nice experience thorugh following this journey together with me, any questions are welcome to [reach_me_in_email](mailto:[email protected]?subject=Protege-pizza.owl) or check my [LinkedIn](https://www.linkedin.com/in/xiaoqi-zhao-03715614/), thank you! (2023)