Skip to content
Snippets Groups Projects
Commit c54351b8 authored by Aurélien Lamercerie's avatar Aurélien Lamercerie
Browse files

Update SSC-02-02

parent 2687b602
No related branches found
No related tags found
No related merge requests found
# ::id SSC-01-01
# ::snt The celestial objects that orbit the Sun directly include the eight planets and the dwarf planets.
@base <https://tetras-libre.fr/mars/ssc> .
@prefix : <https://tetras-libre.fr/mars/ssc#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
# ::predefined-property :has-part :part-of :manner
:part-of a owl:ObjectProperty .
:has-part
a owl:ObjectProperty ;
owl:inverseOf :part-of .
:manner a owl:DatatypeProperty .
# ::comment "the celestial objects that orbit the Sun directly ..."
:object a rdfs:Class .
:celestial-object
a rdfs:Class ;
a :object .
:orbit a owl:ObjectProperty .
:sun a owl:individual .
:celestial-object-orbit-sun a rdfs:Class ;
rdfs:subClassOf :celestial-object ;
rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty :orbit ;
owl:hasValue :sun
] .
:celestial-object-orbit-sun-directly a rdfs:Class ;
rdfs:subClassOf :celestial-object-orbit-sun ;
rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty :direct-orbit ;
owl:hasValue :sun
] .
:direct-orbit a owl:ObjectProperty ;
rdfs:subPropertyOf :orbit ;
:manner "direct" .
# ::comment "... the eight planets ..."
:planet a rdfs:Class .
:eight-planet
a rdfs:Class ;
rdfs:subClassOf :planet ;
owl:cardinality 8 .
# ::comment "... the dwarf planets ..."
:dwarf-planet
a rdfs:Class ;
rdfs:subClassOf :planet .
# ::comment "the celestial objects ... include ... the eight planets and the dwarf planets ..."
:celestial-object
rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty :include ;
owl:hasValue :eight-planet
] .
:celestial-object
rdfs:subClassOf [
a owl:Restriction ;
owl:onProperty :include ;
owl:hasValue :dwarf-planet
] .
# -----------------------------------------------------------------------------
# Schémas de Transduction Compositionnel (STC)
# -----------------------------------------------------------------------------
#
# Pré-traitement = chaque noeud du graphe est associé à un filet de type ATOM
#
# TYPE = { atom, commonConcept, predicate, dataValue, class, objectProperty }
#
# -----------------------------------
# Fonctions
# -----------------------------------
# ::function is-common-concept (x)
retourne VRAI si x est un concept AMR commun, c'est à
dire si x n'est pas un prédicat ou un phénomène linguistique
exemple de concepts communs : boy, car, ...
# ::function is-predicate (x)
retourne VRAI si x est un prédicat AMR
# ::function is-linguistic-phenomena (x)
retourne VRAI si x est un phénomène linguistique
# ::function get-value (x)
retourne la chaine de caractère x sans guillemet
# ::function get-value (x, y)
retourne la concaténation de get-value(x), '-' et get-value(y)
# ::function define-id (x, y ...)
retourne un identifiant sous une forme standard (':x-y-...')
# ::function define-inverse-id (x)
retourne un identifiant inverse pour la propriété d'id "x" sous une forme
standard (':x-of' ou ':x-by')
# ::function define-OWL-restriction (C1, P, C2)
retourne la définition d'une restriction OWL sur la classe c1 sous la forme
suivante :
{C1} rdfs:subClassOf [ rdf:type owl:Restriction ;
owl:onProperty {p} ;
owl:hasValue {C2}
] .
# --------------------------------------------------------
# STC niveau 0 : analyse des concepts atomiques
# --------------------------------------------------------
STC-01 (x) :
atom(x) & isCommonConcept(x.concept)
=> nodes = { x.nodes }
type = commonConcept
concept = get-value(x.value)
values = { concept }
newNet(nodes, type, values)
STC-02 (x) :
atom(x) & isDataValue(x)
=> nodes = { x.nodes }
type = dataValue
value = get-value(x.value)
values = { value }
newNet(nodes, type, values)
STC-03 (x) :
atom(x) & is-predicate(x)
=> nodes = { x.nodes }
type = predicate
predicate = get-value(x.value)
values = { predicate }
newNet(nodes, type, values)
# --------------------------------------------------------
# STC niveau 1 : extraction des entités nommées
# --------------------------------------------------------
# --
# --------------------------------------------------------
# STC niveau 2 : extraction de classes
# --------------------------------------------------------
STC-21 (x) :
commonConcept(x)
=> nodes = { x.nodes }
type = class
id = define-id(x.concept)
owl = string(id, ' a ', 'rdfs:Class')
values = { id, owl }
newNet(nodes, type, values)
STC-22 (c1, v1) :
class(c1) & dataValue(v1) & quant(c1, v1)
=> nodes = { x.nodes }
type = class
cardinality = v1.value
owl = string(c1.id, ' owl:cardinality ', cardinality)
x.values = { cardinality, owl }
# --------------------------------------------------------
# STC niveau 3 : extraction des individus
# --------------------------------------------------------
# --
# --------------------------------------------------------
# STC niveau 4 : extraction de propriétés
# --------------------------------------------------------
STC-31 (x, y) :
predicate(x) & ARGi(x, y)
=> nodes = { x.nodes }
type = objectProperty
property_id = define-id(x.predicate)
owl = string(property_id, ' a ', 'owl:objectProperty')
values = { property_id, owl }
newNet(nodes, type, values)
STC-32 (x, y) :
predicate(x) & ARGi-of(x, y)
=> nodes = { x.nodes }
type = objectProperty
property_id = define-id(x.predicate)
owl = string(property_id, ' a ', 'owl:objectProperty')
values = { property_id, owl }
newNet(nodes, type, values)
STC-33 (x, y) :
objectProperty(x) & :ARGi-of(x, y)
=> inverse_property_id = define-inverse-id(x.property_id)
owl = string(x.property_id, ' owl:inverseOf ', inverse_property_id)
x.values = x.values + { owl }
# --------------------------------------------------------
# STC niveau 5 : extraction de relations taxonomiques
# --------------------------------------------------------
STC-41 (x, y, z) :
:ARG1-of(x, y) & class(x) & objectProperty(y) & ARG0(y, z) & class(z)
=> nodes = { x.nodes }
type = class
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)
# --------------------------------------------------------
# STC niveau 6 : extraction de relations non taxonomiques
# --------------------------------------------------------
# question sur restriction : voir ticket 1
STC-51 (p1, c1, c2) :
:objectProperty(p1) & class(c1) & class(c2) & ARG1(p1,c1) & ARG2(p1,c2)
=> nodes = { p1.nodes, c1.nodes, c2.nodes }
type = relation
owl = define-OWL-restriction (c2.id, p1.id, c1.id)
values = { owl }
newNet(nodes, type, values)
# --------------------------------------------------------
# STC niveau 7 : extraction d'axiomes complexes
# --------------------------------------------------------
# --
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment