Skip to content

Concept Generation

Lixi edited this page Apr 2, 2021 · 5 revisions

In this section the algorithm for the concept generations will be explained

positive concept generation

The generation of positive concepts starts at an allowed type and looks at rules where this type is either in Range (resp. Domain). Depending on the depth it will recursively look at other rules from the Domain (resp. Range).

This is done using DFS until either the maximum allowed concept length or the maximum depth is reached.

LPBenchGen creates all theoretically possible concepts even if they may make no semantically sense. However after the creation of all these concept it will check if there exists a solution for the concept using the ABox.

Example

Start type is Band

Band is domain of hasAlbum and the range of hasAlbum is Album.

LPBenchGen now checks if Album is an allowed type (or if set a directly inferred allowed type)

Hence we can create the following concept already:

  • Band and hasAlbum some Album

now we look a step deeper and the domain of hasAlbum has also MusicialArtist so we can add the following concept

  • Band and (hasAlbum some Album) and MusicialArtist hence a Band which is also a single Musician and has an Album.

This is done using DFS until either the maximum allowed concept length or the maxiumum depth is reached.

negative concept generation

For a positive concept each component will be negated once. This means if a concept is an intersection of three concepts, each concept will be negated and added to the list of negative concepts.

Example

positive concept: Band and (hasAlbum some (Album and hasAwards some Award))

So a Band which has an Album which has an Award.

This concept will yield all of the following negative concepts:

  • not Band and (hasAlbum some (Album and hasAwards some Award)) (f.e. a Musician who has an award winning album)
  • Band and not((hasAlbum some (Album and hasAwards some Award))) (hence a Band which has only Albums which are not award winning)
Clone this wiki locally