Register to get access to free programming courses with interactive exercises

Ontology Python: Building data abstractions

Programmers always write software for a specific field. For example, accounting software relies on accounting rules, and a website for watching TV shows relies on TV industry concepts such as seasons or episodes. The same goes for other fields: booking flights and hotels, finding tours, buying and selling cars.


Understanding the domain for which you're writing a program is just as important as being able to program. Fields can be complex, like accounting or engineering manufacturing. You do not need to know it thoroughly, but a general understanding is still required.

Let's look at Hexlet since you know its key concepts — courses, lessons, professions, tests, code reviews, quizzes, course participants, and projects. There are two hundred entities — concepts in the code on Hexlet.

Entities are often in relationships with one another:

  • Professions consist of courses
  • Courses consist of lessons
  • Lessons consist of theory blocks, quizzes, and exercises
  • Quizzes aggregate questions
  • Questions obtain answers

These connections have specific names:

  • One-to-many or o2m — one lesson can have one course, but one course contains many lessons
  • Many-to-many or m2m — many users can take one course, and one user can take many courses

Sign up

Programming courses for beginners and experienced developers. Start training for free

  • 130 courses, 2000+ hours of theory
  • 1000 practical tasks in a browser
  • 360 000 students
By sending this form, you agree to our Personal Policy and Service Conditions

Our graduates work in companies:

<span class="translation_missing" title="translation missing:">Bookmate</span>
<span class="translation_missing" title="translation missing:">Healthsamurai</span>
<span class="translation_missing" title="translation missing:">Dualboot</span>
<span class="translation_missing" title="translation missing:">Abbyy</span>
Suggested learning programs
Developing web applications with Django
10 months
from scratch
under development
Start at any time

Use Hexlet to the fullest extent!

  • Ask questions about the lesson
  • Test your knowledge in quizzes
  • Practice in your browser
  • Track your progress

Sign up or sign in

By sending this form, you agree to our Personal Policy and Service Conditions
Toto Image

Ask questions if you want to discuss a theory or an exercise. Hexlet Support Team and experienced community members can help find answers and solve a problem.