From 2687b60261a24f21157f1e7a13d1b4012518ea77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Lamercerie?=
 <aurelien.lamercerie@tetras-libre.fr>
Date: Fri, 5 Aug 2022 12:26:06 +0200
Subject: [PATCH] Some update in SSC-01, SSC-02

---
 data/SSC-01/SSC-01-01/SSC-01-01.cts.txt    | 45 ++++++++++--------
 data/SSC-02/SSC-02-01/SSC-02-01.al.owl.ttl | 15 ++++--
 data/SSC-02/SSC-02-01/SSC-02-01.cts.txt    | 54 +++++++++++-----------
 3 files changed, 65 insertions(+), 49 deletions(-)

diff --git a/data/SSC-01/SSC-01-01/SSC-01-01.cts.txt b/data/SSC-01/SSC-01-01/SSC-01-01.cts.txt
index 66f11b8..6faf73a 100644
--- a/data/SSC-01/SSC-01-01/SSC-01-01.cts.txt
+++ b/data/SSC-01/SSC-01-01/SSC-01-01.cts.txt
@@ -107,19 +107,19 @@ STC-21 (x, y) :
      commonConcept(x)
      =>   nodes = { x.nodes }
           type = class
-          class_id = define-id(x.concept)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          values = { class_id, owl }
+          id = define-id(x.concept)
+          owl = string(id, ' a ', 'rdfs:Class')
+          values = { id, owl }
           newNet(nodes, type, values)
 
 STC-22 (x, y) :
      :domain(x,y) & class(x) & class(y)
      =>   nodes = { x.nodes, y.nodes }
           type = class
-          class_id = define-id(x.class_id, y.class_id)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          owl = string(class_id, ' rdfs:subClassOf ', y.class_id)
-          values = { class_id, owl }
+          id = define-id(x.id, y.id)
+          owl = string(id, ' a ', 'rdfs:Class')
+          owl = string(id, ' rdfs:subClassOf ', y.id)
+          values = { id, owl }
           newNet(nodes, type, values)
 
 
@@ -131,11 +131,11 @@ STC-23 (x, y) :
      :name(x, y) & class(x) & namedEntities(x, y)
      =>   nodes = { x.nodes }
           type = individual
-          class_id = x.class_id
-          individual_id = y.name
-          owl = string(individual_id, ' a ', 'owl:individual')
-          owl = string(individual_id, ' a ', class_id)
-          values = { class_id, individual_id, owl }
+          id = x.id
+          id = y.name
+          owl = string(id, ' a ', 'owl:individual')
+          owl = string(id, ' a ', id)
+          values = { id, id, owl }
           newNet(nodes, type, values)
 
 
@@ -167,11 +167,11 @@ STC-41 (x, y, z) :
      :ARG1-of(x, y) & class(x) & objectProperty(y) & ARG0(y, z) & class(z)
      =>   nodes = { x.nodes }
           type = class
-          class_id = define-id(z.class_id, y.property_id, x.class_id)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          owl = string(class_id, ' rdfs:subClassOf ', x.class_id)
-          owl = define-OWL-restriction (class_id, y.property_id, z.class_id)
-          values = { class_id, owl }
+          id = define-id(z.id, y.property_id, x.id)
+          owl = string(id, ' a ', 'rdfs:Class')
+          owl = string(id, ' rdfs:subClassOf ', x.id)
+          owl = define-OWL-restriction (id, y.property_id, z.id)
+          values = { id, owl }
           newNet(nodes, type, values)
 
 exemple :
@@ -181,7 +181,7 @@ exemple :
 
  => nodes = { s, b, g }
     type = class
-    class_id = "gravitation-bind-system"
+    id = "gravitation-bind-system"
     owl = ":gravitation-bind-system a rdfs:Class"
     owl = ":gravitation-bind-system a :system"
     owl = ":gravitation-bind-system      rdfs:subClassOf     [ rdf:type owl:Restriction ;
@@ -194,7 +194,14 @@ exemple :
 # STC niveau 6 : extraction de relations non taxonomiques
 # --------------------------------------------------------
 
-# --
+STC-51 (i1, i2) :
+     :part(i1, i2) & individual(c1) & individual(i1)
+     =>   nodes = { c1.nodes, i1.nodes }
+          type = relation
+          id = define-id('has-part')
+          owl = define-OWL-restriction (i1.id, id, i2.id)
+          values = { id, owl }
+          newNet(nodes, type, values)
 
 
 # --------------------------------------------------------
diff --git a/data/SSC-02/SSC-02-01/SSC-02-01.al.owl.ttl b/data/SSC-02/SSC-02-01/SSC-02-01.al.owl.ttl
index d3e437e..0d2cffc 100644
--- a/data/SSC-02/SSC-02-01/SSC-02-01.al.owl.ttl
+++ b/data/SSC-02/SSC-02-01/SSC-02-01.al.owl.ttl
@@ -89,16 +89,25 @@
 
 # ::comment "... and small Solar System bodies."
 
-:solar-system a owl:individual .
+:solar-system
+	a owl:individual ;
+	a :system .
 
-:solar-system-small-bodies a rdfs:Class ;
+body a rdfs:Class .
+
+small-body
+	a rdfs:Class ;
+	rdfs:subClassOf :body .
+
+:solar-system-small-body a rdfs:Class ;
+	rdfs:subClassOf :small-body ;
 	rdfs:subClassOf	[
 		a owl:Restriction ;
 		owl:onProperty :part-of ;
 		owl:hasValue :solar-system
 	] .
 
-:solar-system-small-bodies a rdfs:Class ;
+:solar-system-small-body a rdfs:Class ;
 	rdfs:subClassOf	[
 		a owl:Restriction ;
 		owl:onProperty :part-of ;
diff --git a/data/SSC-02/SSC-02-01/SSC-02-01.cts.txt b/data/SSC-02/SSC-02-01/SSC-02-01.cts.txt
index 9f67b5f..2a7d388 100644
--- a/data/SSC-02/SSC-02-01/SSC-02-01.cts.txt
+++ b/data/SSC-02/SSC-02-01/SSC-02-01.cts.txt
@@ -107,19 +107,19 @@ STC-21 (x, y) :
      commonConcept(x)
      =>   nodes = { x.nodes }
           type = class
-          class_id = define-id(x.concept)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          values = { class_id, owl }
+          id = define-id(x.concept)
+          owl = string(id, ' a ', 'rdfs:Class')
+          values = { id, owl }
           newNet(nodes, type, values)
 
 STC-22 (x, y) :
      :domain(x,y) & class(x) & class(y)
      =>   nodes = { x.nodes, y.nodes }
           type = class
-          class_id = define-id(x.class_id, y.class_id)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          owl = string(class_id, ' rdfs:subClassOf ', y.class_id)
-          values = { class_id, owl }
+          id = define-id(x.id, y.id)
+          owl = string(id, ' a ', 'rdfs:Class')
+          owl = string(id, ' rdfs:subClassOf ', y.id)
+          values = { id, owl }
           newNet(nodes, type, values)
 
 
@@ -131,11 +131,11 @@ STC-23 (x, y) :
      :name(x, y) & class(x) & namedEntities(x, y)
      =>   nodes = { x.nodes }
           type = individual
-          class_id = x.class_id
-          individual_id = y.name
-          owl = string(individual_id, ' a ', 'owl:individual')
-          owl = string(individual_id, ' a ', class_id)
-          values = { class_id, individual_id, owl }
+          id = x.id
+          id = y.name
+          owl = string(id, ' a ', 'owl:individual')
+          owl = string(id, ' a ', id)
+          values = { id, id, owl }
           newNet(nodes, type, values)
 
 
@@ -167,11 +167,11 @@ STC-41 (x, y, z) :
      :ARG1-of(x, y) & class(x) & objectProperty(y) & ARG0(y, z) & class(z)
      =>   nodes = { x.nodes }
           type = class
-          class_id = define-id(z.class_id, y.property_id, x.class_id)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          owl = string(class_id, ' rdfs:subClassOf ', x.class_id)
-          owl = define-OWL-restriction (class_id, y.property_id, z.class_id)
-          values = { class_id, owl }
+          id = define-id(z.id, y.property_id, x.id)
+          owl = string(id, ' a ', 'rdfs:Class')
+          owl = string(id, ' rdfs:subClassOf ', x.id)
+          owl = define-OWL-restriction (id, y.property_id, z.id)
+          values = { id, owl }
           newNet(nodes, type, values)
 
 exemple :
@@ -181,7 +181,7 @@ exemple :
 
  => nodes = { s, b, g }
     type = class
-    class_id = "gravitation-bind-system"
+    id = "gravitation-bind-system"
     owl = ":gravitation-bind-system a rdfs:Class"
     owl = ":gravitation-bind-system a :system"
     owl = ":gravitation-bind-system      rdfs:subClassOf     [ rdf:type owl:Restriction ;
@@ -193,17 +193,17 @@ exemple :
 # --------------------------------------------------------
 # STC niveau 6 : extraction de relations non taxonomiques
 # --------------------------------------------------------
-# question sur rstriction : voir ticket 1
+# question sur restriction : voir ticket 1
 
-STC-51 (x, y, z) :
-     :part-of(x, y) & class(x) & individual(z)
-     =>   nodes = { x.nodes }
+STC-51 (c1, i1) :
+     :part-of(c1, i1) & class(c1) & individual(i1)
+     =>   nodes = { c1.nodes, i1.nodes }
           type = class
-          class_id = define-id(z.class_id, y.property_id, x.class_id)
-          owl = string(class_id, ' a ', 'rdfs:Class')
-          owl = string(class_id, ' rdfs:subClassOf ', x.class_id)
-          owl = define-OWL-restriction (class_id, ':part-of', z.class_id)
-          values = { class_id, owl }
+          id = define-id(i1.id, c1.id)
+          owl = string(id, ' a ', 'rdfs:Class')
+          owl = string(id, ' rdfs:subClassOf ', c1.id)
+          owl = define-OWL-restriction (id, ':part-of', i1.id)
+          values = { id, owl }
           newNet(nodes, type, values)
 
 
-- 
GitLab