-
Notifications
You must be signed in to change notification settings - Fork 0
Extended FOAF Demo Project
This repository contains an extended FOAF demo ontology used to illustrate the updated web-based OWLGrEd visual notation and tooling for OWL 2 ontology management. The example reuses the FOAF vocabulary and adds a small set of local concepts for demonstrating alternative visual representations of individuals and classifier-based controlled value sets.
The Extended FOAF ontology is based on the FOAF vocabulary and focuses on people, agents, groups, organisations, profiles, interests, and community-related information. Existing FOAF classes and properties are reused where possible, while a small extension introduces classifier examples for values that may be represented as literals, OWL individuals, SKOS concepts, or both OWL individuals and SKOS concepts.
The example demonstrates separate individual nodes, compact individual lists inside class nodes, dedicated individual list nodes with selected property values, and four classifier modes.
The Extended FOAF demo project for the OWLGrEd editor is available for download.
The project contains the graphical OWL ontology used in the demo.
Project file:
FOAF_Extended_Project.json
To load the project into the OWLGrEd editor:
- Create a new user. See Getting-Started
- Create a new OWLGrEd project. See Create a new project
- In the upper project toolbar, click the Upload Project button. See Download and Upload Project
- Select the downloaded project JSON file.
After uploading, the Extended FOAF ontology diagram will appear in the editor and can be explored or modified.
OWLGrEd supports three complementary visual representations of OWL individuals.
An individual can be shown as a separate graphical node together with its class and property assertions.
Individuals can be displayed as a compact list inside the corresponding class node. A selected data property may be used as the display label, while the individual IRI is shown in parentheses.
The number of individuals shown graphically can be limited. Individuals beyond the visible limit remain in the ontology and are still available for inspection, editing, and export.
A dedicated individual list node can show individuals of a selected class together with selected property values in a table-like form.
The number of graphically visible individuals can be set separately for each dedicated individual list node.
The Extended FOAF example demonstrates four classifier modes supported by OWLGrEd. All classifier types use the same basic visual structure, while the selected mode determines how the classifier and its values are represented in the exported ontology.
The Gender classifier represents a controlled set of literal values and is connected to the existing foaf:gender property. The original FOAF domain foaf:Agent is retained.
OWL Functional Syntax
Declaration( Class( :Person ) )
Declaration( DataProperty( :gender ) )
Declaration( Datatype( :Gender ) )
DataPropertyDomain( :gender :Person )
DataPropertyRange( :gender :Gender )
DatatypeDefinition(
:Gender
DataOneOf( "Male" "Female" )
)
The ProfileStatus classifier is represented as an OWL class, while its values are represented as named individuals. The property profileStatus is used for foaf:PersonalProfileDocument.
OWL Functional Syntax
Declaration(Class(foaf:PersonalProfileDocument))
Declaration(Class(:ProfileStatus))
Declaration(NamedIndividual(:Active))
Declaration(NamedIndividual(:Inactive))
Declaration(NamedIndividual(:Archived))
Declaration(ObjectProperty(:profileStatus))
ClassAssertion(:ProfileStatus :Active)
ClassAssertion(:ProfileStatus :Inactive)
ClassAssertion(:ProfileStatus :Archived)
DifferentIndividuals(:Active :Inactive :Archived)
EquivalentClasses(
:ProfileStatus
ObjectOneOf(:Active :Inactive :Archived)
)
ObjectPropertyDomain(:profileStatus foaf:PersonalProfileDocument)
ObjectPropertyRange(:profileStatus :ProfileStatus)
The InterestTopic classifier is represented as a skos:ConceptScheme, while its values are represented as skos:Concept instances. It is connected to the existing foaf:topic_interest property, whose original domain foaf:Agent is retained.
OWL Functional Syntax
Declaration(Class(skos:Concept))
Declaration(Class(skos:ConceptScheme))
Declaration(Class(foaf:Agent))
Declaration(NamedIndividual(:InterestTopic))
Declaration(NamedIndividual(:SemanticWeb))
Declaration(NamedIndividual(:ArtificialIntelligence))
Declaration(NamedIndividual(:Databases))
Declaration(ObjectProperty(skos:inScheme))
Declaration(ObjectProperty(foaf:topic_interest))
Declaration(DataProperty(skos:notation))
ClassAssertion(skos:ConceptScheme :InterestTopic)
ClassAssertion(skos:Concept :SemanticWeb)
ClassAssertion(skos:Concept :ArtificialIntelligence)
ClassAssertion(skos:Concept :Databases)
ObjectPropertyAssertion(skos:inScheme :SemanticWeb :InterestTopic)
ObjectPropertyAssertion(skos:inScheme :ArtificialIntelligence :InterestTopic)
ObjectPropertyAssertion(skos:inScheme :Databases :InterestTopic)
DataPropertyAssertion(skos:notation :SemanticWeb "SW")
DataPropertyAssertion(skos:notation :ArtificialIntelligence "AI")
DataPropertyAssertion(skos:notation :Databases "DB")
ObjectPropertyDomain(foaf:topic_interest foaf:Agent)
ObjectPropertyRange(foaf:topic_interest skos:Concept)
SubClassOf(
foaf:Agent
ObjectAllValuesFrom(
foaf:topic_interest
ObjectIntersectionOf(
skos:Concept
ObjectHasValue(skos:inScheme :InterestTopic)
)
)
)
The CommunityRole classifier combines the OWL individual classifier and SKOS vocabulary modes. The classifier is represented as an OWL class and as a SKOS concept scheme, while each value is represented both as an OWL individual and as a skos:Concept.
OWL Functional Syntax
Declaration(Class(skos:Concept))
Declaration(Class(skos:ConceptScheme))
Declaration(Class(foaf:Person))
Declaration(Class(:CommunityRole))
Declaration(AnnotationProperty(skos:notation))
Declaration(ObjectProperty(skos:inScheme))
Declaration(ObjectProperty(:communityRole))
Declaration(NamedIndividual(:CommunityRoleConceptScheme))
Declaration(NamedIndividual(:Member))
Declaration(NamedIndividual(:Moderator))
Declaration(NamedIndividual(:Administrator))
ClassAssertion(
skos:ConceptScheme
:CommunityRoleConceptScheme
)
ClassAssertion(:CommunityRole :Member)
ClassAssertion(skos:Concept :Member)
ObjectPropertyAssertion(
skos:inScheme
:Member
:CommunityRoleConceptScheme
)
AnnotationAssertion(skos:notation :Member "MEM")
ClassAssertion(:CommunityRole :Moderator)
ClassAssertion(skos:Concept :Moderator)
ObjectPropertyAssertion(
skos:inScheme
:Moderator
:CommunityRoleConceptScheme
)
AnnotationAssertion(skos:notation :Moderator "MOD")
ClassAssertion(:CommunityRole :Administrator)
ClassAssertion(skos:Concept :Administrator)
ObjectPropertyAssertion(
skos:inScheme
:Administrator
:CommunityRoleConceptScheme
)
AnnotationAssertion(skos:notation :Administrator "ADM")
DifferentIndividuals(
:Member
:Moderator
:Administrator
)
ObjectPropertyDomain(
:communityRole
foaf:Person
)
ObjectPropertyRange(
:communityRole
:CommunityRole
)
EquivalentClasses(
:CommunityRole
ObjectOneOf(
:Member
:Moderator
:Administrator
)
)