0

In an OWL ontology, given a class Student; I want to define another class StudentsPair, which is any pair of students, in such a way that automatically computes all the possible dual combinations of Student, i.e.

Student(x) and Student (y) --> StudentsPair(x,y)

I want StudentsPair as a class, not a property, because it may have additional features (such as averagePerformanceForPair, etc.).

For example,

Premise

Student(John)
Student(Alex)
Student(Mary)
-----------------

Conclusion

StudentPair((John, Alex))
StudentPair((John, Mary))
StudentPair((Alex, Mary))

The reasoner has to somehow create these new individuals! Is this possible?

Median Hilal
  • 1,483
  • 9
  • 17
  • At first, it would probably easier to try to create nine pairs (3 × 3) since there's probably no great way to restrict the ordering, and it might be difficult to prevent self-pairs. But as AKSW says, it's easy to get to the point where you can relate each student to every other student, but it might not be possible to cause instances of another class to exist. – Joshua Taylor Jun 23 '16 at 15:01

1 Answers1

2

You need an additional role student, then you can use Description Logic Rules, something like that might work:

Student ≡ ∃student.Self
student ◦ U ◦ student ⊑ StudentPair
UninformedUser
  • 8,397
  • 1
  • 14
  • 23
  • What is `U` at the second line of your code, and did you intend `StudentPair` as a property? Because I want it a class, as I state in my question. – Median Hilal Jun 21 '16 at 18:58
  • It can't be a class, which is an unary relation, if you have a binary relation. And `U` would be the universal role. You should know that OWL does not have variables, so you usually have to use rules. But for your case, I'm not sure how a reasoner should create pairs of instances which itself are instances of a class. That sounds like higher-order logic and not first-order logic. But I'm not sure and maybe somebody else can help you. – UninformedUser Jun 21 '16 at 21:20
  • The construction used here is known as rolification, and has been discussed in a number of other questions, including [OWL 2 rolification](http://stackoverflow.com/questions/16989042/owl-2-rolification). – Joshua Taylor Jun 23 '16 at 14:45