top of page

The People_Example Ontology

Writer's picture: Michael DeBellisMichael DeBellis

Updated: Oct 22, 2021

I'm working on an article where I provide an overview of the various semantic web technologies such as OWL, SWRL, SPARQL, and SHACL. As part of the article I'm including a sample ontology to illustrate various concepts such as defined classes, the Open World Assumption, and SWRL rules. This post is so that readers can download this example ontology. To download click on this link: People_Ontology That should take you to Google drive where you will get a message: "No Preview Available". Click on the blue button: "Download" and then put the OWL file wherever you wish to store your ontologies.


Also, in order to load and view the ontology in Protégé, I've provided instructions for people who have never used Protégé to load the required plugins and views as well as instructions for viewing examples in the ontology: Using the People_Ontology.


This is not a substitute for the Pizza Tutorial. This is a simpler ontology and the documentation is mostly about viewing examples rather than on developing the ontology. For an in-depth, hands-on tutorial please see the previous post on the revised Pizza Tutorial. This is primarily meant for readers of the article and for those who want to view some capabilities of OWL and Protégé but don't want to go through a tutorial. Sort of an executive summary tutorial. However, there are some examples in this ontology, especially regarding property hierarchies and SPARQL that may be interesting to those who have done the Pizza tutorial. One of the most important additions is a sophisticated SPARQL query that illustrates the concept of linked data developed with the help of Franz Inc.


Note: I've received some feedback about the binary definition of gender in this ontology. This was not meant to be any type of political statement. While I don't write about political issues I want to emphasize I completely support LGBTQ rights. The binary definition of gender was nothing but a simplifying assumption to create what I hoped would be an intuitive example that was easily understood by everyone. For the time being I'm leaving it as is because I'm not sure the appropriate way to change some of the defined classes with non-binary definitions of gender but I want to emphasize that just as the Pizza ontology isn't meant to really model a restaurant, this model is just an example for learning purposes with many simplifying assumptions. Just as I didn't deal with adopted children or step parents I simplified things by having a binary definition of gender and I realize that wouldn't be appropriate for a real world ontology.

8 commentaires


swrobuts
27 déc. 2024

Hello Michael,


thanks for sharing your ontology. I downloaded the file and started to query it a bit with claude.ai because I'm interested in how it makes an AI interact with an ontology. It works surprisingly well.


I would add a rule to ensure that Mary's biological sister, Susan, is also John's daughter. So a rule like the following:


### http://www.semanticweb.org/mdebe/ontologies/example#Parent_Sibling_Rule

[ swrla:isRuleEnabled "true"^^xsd:boolean ;

rdfs:comment ""^^xsd:string ;

rdfs:label "Parent_Sibling_Rule"^^xsd:string ;

rdf:type swrl:Imp ;

swrl:body [ rdf:type swrl:AtomList ;

rdf:first [ rdf:type swrl:IndividualPropertyAtom ;

swrl:propertyPredicate :has_Sister ;

swrl:argument1 :a ;

swrl:argument2 :b

] ;

rdf:rest [ rdf:type swrl:AtomList ;

rdf:first [ rdf:type swrl:IndividualPropertyAtom ;

swrl:propertyPredicate :has_Parent ;

swrl:argument1 :a ;

swrl:argument2 :c

] ;

rdf:rest rdf:nil

]

] ;

swrl:h…


Modifié
J'aime
swrobuts
27 déc. 2024
En réponse à

Here is the final result, in which I manually corrected the directions of the arrows in draw.io and also removed the arrows for relationships.


It is very impressive how well and almost error-free this worked out-of-the-box with an AI like Claude.ai. I see great potential in the interaction of formal ontologies with LLMs.


Best regards and all the best


Robert


J'aime

Invité
12 déc. 2024

A , B and C are my major classes and i made all disjoint , but when i made axioms like A hasCustomerRequirementB then run reasoner then i face inconsistency when i delete disjoint between A and B then run reasoner , i got no inconsistency that consistence ontology but in your pizza ontology Pizza , PizzaTopping and PizzaBase classes are disjoint and also Pizza hasbase some PizzaBase easily accessible after run the reasoner , no inconsistency please guide me regarding this

J'aime

Dongho Song
Dongho Song
14 nov. 2024

Your example code regarding Obama is not working on Protege.

The following error message comes out: Encountered { at line 12 column 38. Expected one of: WHERE Variable

(

J'aime

Invité
03 juil. 2023

Thank you for the suggestion,

I will try this

J'aime

harsh gupta
harsh gupta
21 juin 2023

SPARQL tool does not show in my protege tool , please give me solution

J'aime
Michael DeBellis
Michael DeBellis
21 juin 2023
En réponse à

There are two SPARQL tools in Protege: the default SPARQL tab and Snap SPARQL. I almost always use Snap SPARQL. There are a number of ways it is better. E.g., it can see inferences of the reasoner and it can add new info to the ontology. Snap SPARQL is a plugin though. It isn't available when you first download Protege, you need to install it from the plugins menu. Once you install it, you need to restart Protege. Then you need to add it using Window>Views>Query Views. That will give you one of those window outlines that you can add to an existing view. Also, in 5.6 there is a bug with the default SPARQL tab. I forget the details…

J'aime
  • facebook
  • linkedin

©2019 by Michael DeBellis. Proudly created with Wix.com

bottom of page