I'm new to protege and i have to model a grid with similar properties to soduku, in Manchester OWL syntax.
I have been searching but i can't seem to find a way to make an axiom that says "each column must have 4 cells, and must have each one of these values ". As in, assuming a 4x1 column, each cell must contain one number and the column must have all the numbers [1:4].
I have already set up some Objects , data properties and Object properties which i will leave here. I will leave the full .owl file here so it can be loaded thus making it easier to give help.
All help is highly appreciated.
Prefix: dc: <http://purl.org/dc/elements/1.1/>
Prefix: owl: <http://www.w3.org/2002/07/owl#>
Prefix: rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
Prefix: rdfs: <http://www.w3.org/2000/01/rdf-schema#>
Prefix: GridTest: <http://www.semanticweb.org/existance/ontologies/2017/4/GridTest#>
Prefix: xml: <http://www.w3.org/XML/1998/namespace>
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>
Ontology: <http://www.semanticweb.org/existance/ontologies/2017/4/GridTest>
Datatype: xsd:int
Datatype: xsd:integer
ObjectProperty: GridTest:hasCell
    SubPropertyOf: 
        GridTest:hasRelation
    Domain: 
        GridTest:Grid
    InverseOf: 
        GridTest:isCellOf
ObjectProperty: GridTest:hasColum
    SubPropertyOf: 
        GridTest:hasRelation
    Domain: 
        GridTest:Grid
    Range: 
        GridTest:Grid
    InverseOf: 
        GridTest:isColumOf
ObjectProperty: GridTest:hasRelation
ObjectProperty: GridTest:isCellOf
    InverseOf: 
        GridTest:hasCell
ObjectProperty: GridTest:isColumOf
    InverseOf: 
        GridTest:hasColum
DataProperty: GridTest:hasValue
    Characteristics: 
        Functional
    Domain: 
        GridTest:Cell
    Range: 
        {"1"^^xsd:int , "2"^^xsd:int , "3"^^xsd:int , "4"^^xsd:int}
Class: GridTest:Cell
    SubClassOf: 
        GridTest:Grid,
        GridTest:hasValue exactly 1 xsd:int
Class: GridTest:Colum
    SubClassOf: 
        GridTest:Grid,
        GridTest:hasCell exactly 4 GridTest:Cell
Class: GridTest:Grid
    SubClassOf: 
        GridTest:hasColum exactly 4 GridTest:Colum
Individual: GridTest:cell1
    Facts:  
     GridTest:isCellOf  GridTest:col,
     GridTest:hasValue  1
Individual: GridTest:cell2
    Facts:  
     GridTest:isCellOf  GridTest:col
Individual: GridTest:cell3
    Facts:  
     GridTest:isCellOf  GridTest:col
Individual: GridTest:cell4
    Facts:  
     GridTest:isCellOf  GridTest:col
Individual: GridTest:col
    Facts:  
     GridTest:isColumOf  GridTest:grid
Individual: GridTest:grid
EDIT: the point of this is that when i run the reasoner, values to some of the cells, it will infer the values of the other cells. e.x: cell1 = 1, cell2 =2, cell3 = 3 => the reasoner will infer that cell4's value is 4.