-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDescriptionLogics.g4
More file actions
114 lines (65 loc) · 1.57 KB
/
DescriptionLogics.g4
File metadata and controls
114 lines (65 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
grammar DescriptionLogics;
@header {
package de.pseifer.shar.parsing;
}
formula: formula1 EOF;
axiom: (subsumption)+;
subsumption: formula1 SQSUBSETEQ formula1;
formula1: union | formula2;
formula2: intersection | formula3;
formula3:
paren_formula
| negated_formula
| universal
| existential
| greater
| less
| exactly
| top
| bottom
| nominal
| concept;
union: formula3 UNION formula3 | formula3 UNION union;
intersection:
formula3 INTERSECTION formula3
| formula3 INTERSECTION intersection;
negated_formula: NOT formula3;
paren_formula: GROUP_LEFT formula1 GROUP_RIGHT;
universal: UNIVERSAL role DOT formula3;
existential: EXISTENTIAL role DOT formula3;
greater: GREATER role DOT formula3;
less: LESS role DOT formula3;
exactly: EXACTLY role DOT formula3;
top: TOP;
bottom: BOTTOM;
concept: IRI;
nominal: NOMINAL_LEFT IRI NOMINAL_RIGHT;
role: IRI | '-' role;
/* IRI */
IRI: PREFIXED_IRI | FULL_IRI;
FULL_IRI: '<' ~('>')+ '>';
PREFIXED_IRI: PREFIX NAME;
PREFIX: CHARACTER* ':';
NAME: CHARACTER+;
/* TYPES: TODO */
/* TOKEN */
GREATER: '#>' NUMBER | '≥' NUMBER;
LESS: '#<' NUMBER | '≤' NUMBER;
EXACTLY: '#=' NUMBER | '=' NUMBER;
NUMBER: ('0' .. '9')+;
CHARACTER: ('0' .. '9' | 'a' .. 'z' | 'A' .. 'Z' | '_');
WHITESPACE: (' ' | '\t' | '\r' | '\n')+ -> skip;
UNION: '|' | '⊔';
INTERSECTION: '&' | '⊓';
UNIVERSAL: '#A' | '∀';
EXISTENTIAL: '#E' | '∃';
NOT: '!' | '¬';
TOP: '#t' | '⊤';
BOTTOM: '#f' | '⊥';
NOMINAL_LEFT: '{';
NOMINAL_RIGHT: '}';
GROUP_LEFT: '(';
GROUP_RIGHT: ')';
DOT: '.';
SQSUBSETEQ: '⊑' | ':<=';
AXIOMSEP: ';';