-
Notifications
You must be signed in to change notification settings - Fork 0
/
n-ary-rules.n3
79 lines (75 loc) · 2.17 KB
/
n-ary-rules.n3
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
@prefix org: <http://www.w3.org/ns/org#> .
@prefix nary: <http://gallows.inf.ed.ac.uk/schema/n-ary#> .
#################################################################
###
### Rule #1 - convert from a binary relation to the reified form
###
### The rule for a "complete" binary relation. Construct
### the reified version of the n-ary relation, adding
### the relevant triples for the subject and object, and
### any curried arguments.
###
#################################################################
{
?x ?rel ?y .
?rel a nary:BinaryRelation ;
nary:reifiedType ?reified ;
nary:subjectPredicate ?subjP ;
nary:objectPredicate ?objP ;
nary:arg ?arg .
?arg nary:predicate ?argP ;
nary:object ?argO .
} => {
[
a ?reified ;
?subjP ?x ;
?objP ?y ;
?argP ?argO
] .
} .
#################################################################
###
### Rule #2 - convert from a reified form to a binary relation
###
#################################################################
{
?rel a nary:BinaryRelation ;
nary:reifiedType ?reified ;
nary:subjectPredicate ?subjP ;
nary:objectPredicate ?objP ;
nary:arg ?arg .
?arg nary:predicate ?argP ;
nary:object ?argO .
?nary a ?reified ;
?subjP ?subj ;
?objP ?obj ;
?argP ?argO .
} => {
?subj ?rel ?obj .
} .
#################################################################
###
### Rule #3 - When nary:CurriedPredicates inherit, they carry
### along the nary:reifiedType.
###
#################################################################
{
?super a nary:CurriedPredicate ;
nary:reifiedType ?type .
?sub rdfs:subPropertyOf ?super .
} => {
?sub nary:reifiedType ?type .
} .
#################################################################
###
### Rule #4 - When nary:CurriedPredicates inherit, they carry
### along the arguments. This is what gives us N>3.
###
#################################################################
{
?super a nary:CurriedPredicate ;
nary:arg ?arg .
?sub rdfs:subPropertyOf ?super .
} => {
?sub nary:arg ?arg .
} .