Select Git revision
index.html.twig
transduction-schemes.ttl 77.51 KiB
# baseURI: https://unsel.tetras-libre.fr/tenet/transduction-schemes
# imports: http://datashapes.org/dash
# prefix: cts
@prefix cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#> .
@prefix dash: <http://datashapes.org/dash#> .
@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 sh: <http://www.w3.org/ns/shacl#> .
@prefix unl: <https://unl.tetras-libre.fr/rdf/schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
sh:SPARQLRule
rdfs:subClassOf owl:Thing ;
.
<https://unsel.tetras-libre.fr/tenet/transduction-schemes>
rdf:type owl:Ontology ;
owl:imports <http://datashapes.org/dash> ;
.
cts:Transduction_Schemes
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "Transduction Schemes" ;
rdfs:subClassOf owl:Thing ;
.
cts:add-conjunctive-classes-from-list-net
rdf:type sh:SPARQLRule ;
rdfs:label "add-conjunctive-entity-classes" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add disjunctive classes in Ontology
CONSTRUCT {
# Classification
?newClassUri rdfs:subClassOf ?parentUri.
?newClassUri rdfs:label ?newClassLabel.
?newClassUri sys:from_structure ?req.
?newClassUri
owl:equivalentClass [ a owl:Class ;
owl:intersectionOf ( ?item1Uri ?item2Uri ) ] .
# Instantiation (extension)
?instanceUri rdf:type ?newClassUri.
}
WHERE {
# net1: Composite List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:composite.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_parent ?parentObject.
?parentObject net:has_class_uri ?parentUri.
?parentObject net:has_instance_uri ?instanceUri.
?parentObject net:has_concept ?parentConcept.
?net1 net:has_item ?itemObject1, ?itemObject2.
?itemObject1 net:has_class_uri ?item1Uri.
?itemObject1 net:has_node ?uw1.
?itemObject2 net:has_class_uri ?item2Uri.
?itemObject2 net:has_node ?uw2.
# extension: disjunction of UW
?uw1 unl:and ?uw2.
# Label(s) / URI (for classes)
?uw1 rdfs:label ?uw1Label.
?uw2 rdfs:label ?uw2Label.
BIND (strbefore(?uw1Label, '(') AS ?concept1)
BIND (strbefore(?uw2Label, '(') AS ?concept2)
BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
# URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI.
BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
BIND (uri(?s5) AS ?newClassUri).
}""" ;
sh:order 3.23 ;
.
cts:add-disjunctive-classes-from-list-net
rdf:type sh:SPARQLRule ;
rdfs:label "add-disjunctive-entity-classes" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add disjunctive classes in Ontology
CONSTRUCT {
# Classification
?newClassUri rdfs:subClassOf ?parentUri.
?newClassUri rdfs:label ?newClassLabel.
?newClassUri sys:from_structure ?req.
?newClassUri
owl:equivalentClass [ a owl:Class ;
owl:unionOf ( ?item1Uri ?item2Uri ) ] .
# Instantiation (extension)
?instanceUri rdf:type ?newClassUri.
}
WHERE {
# net1: Composite List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:composite.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_parent ?parentObject.
?parentObject net:has_class_uri ?parentUri.
?parentObject net:has_instance_uri ?instanceUri.
?parentObject net:has_concept ?parentConcept.
?net1 net:has_item ?itemObject1, ?itemObject2.
?itemObject1 net:has_class_uri ?item1Uri.
?itemObject1 net:has_node ?uw1.
?itemObject2 net:has_class_uri ?item2Uri.
?itemObject2 net:has_node ?uw2.
# extension: disjunction of UW
?uw1 unl:or ?uw2.
# Label(s) / URI (for classes)
?uw1 rdfs:label ?uw1Label.
?uw2 rdfs:label ?uw2Label.
BIND (strbefore(?uw1Label, '(') AS ?concept1)
BIND (strbefore(?uw2Label, '(') AS ?concept2)
BIND (concat(?concept1, '-or-', ?concept2) AS ?disjunctiveConcept)
BIND (concat(?disjunctiveConcept, '_', ?parentConcept) AS ?newClassLabel).
# URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI.
BIND (concat(?frameURI, ?newClassLabel) AS ?s5).
BIND (uri(?s5) AS ?newClassUri).
}""" ;
sh:order 3.23 ;
.
cts:append-domain-to-relation-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Append possible domain, actor to relation nets
CONSTRUCT {
# update: Relation Net (net1)
?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_source ?sourceObject.
?net1 net:has_possible_domain ?domainClass.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:has_structure ?req.
# -- Relation Object
?net1 net:has_relation ?relationObject.
?relationObject net:has_node ?uw1.
# Atom Net (net2): actor of net1
?net2 a net:Instance.
?net2 net:type net:atom.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2.
?net2 net:has_atom ?sourceObject.
# condition: agt(net1, net2)
?uw1 unl:agt ?uw2.
# Possible Domain
{ ?sourceObject net:has_concept ?domainClass. }
UNION
{ ?sourceObject net:has_instance ?sourceInstance.
?anySourceObject net:has_instance ?sourceInstance.
?anySourceObject net:has_concept ?domainClass. }
}""" ;
sh:order 2.42 ;
.
cts:append-range-to-relation-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Append possible range, target to relation nets
CONSTRUCT {
# update: Relation Net (net1)
?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_target ?targetObject.
?net1 net:has_possible_range ?rangeClass.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:has_structure ?req.
# -- Relation Object
?net1 net:has_relation ?relationObject.
?relationObject net:has_node ?uw1.
# Atom Net (net2): target of net1
?net2 a net:Instance.
?net2 net:type net:atom.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2.
?net2 net:has_atom ?targetObject.
# condition: agt(net1, net2)
?uw1 (unl:obj|unl:res) ?uw2.
# Possible Domain
{ ?targetObject net:has_concept ?rangeClass. }
UNION
{ ?targetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_concept ?rangeClass. }
}""" ;
sh:order 2.42 ;
.
cts:batch_execution
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "batch execution" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:add-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:append-domain-to-relation-net ;
sh:rule cts:append-range-to-relation-net ;
sh:rule cts:bypass-reification ;
sh:rule cts:complement-composite-class ;
sh:rule cts:compose-atom-with-list-by-mod-1 ;
sh:rule cts:compose-atom-with-list-by-mod-2 ;
sh:rule cts:compute-class-uri-of-net-object ;
sh:rule cts:compute-domain-of-relation-property ;
sh:rule cts:compute-instance-uri-of-net-object ;
sh:rule cts:compute-property-uri-of-relation-object ;
sh:rule cts:compute-range-of-relation-property ;
sh:rule cts:create-atom-net ;
sh:rule cts:create-relation-net ;
sh:rule cts:create-unary-atom-list-net ;
sh:rule cts:define-uw-id ;
sh:rule cts:extend-atom-list-net ;
sh:rule cts:generate-atom-class ;
sh:rule cts:generate-atom-instance ;
sh:rule cts:generate-composite-class-from-list-net ;
sh:rule cts:generate-event-class ;
sh:rule cts:generate-relation-property ;
sh:rule cts:init-conjunctive-atom-list-net ;
sh:rule cts:init-disjunctive-atom-list-net ;
sh:rule cts:instantiate-atom-net ;
sh:rule cts:instantiate-composite-in-list-by-extension-1 ;
sh:rule cts:instantiate-composite-in-list-by-extension-2 ;
sh:rule cts:link-classes-by-relation-property ;
sh:rule cts:link-instances-by-relation-property ;
sh:rule cts:link-to-scope-entry ;
sh:rule cts:specify-axis-of-atom-list-net ;
sh:rule cts:update-batch-execution-rules ;
sh:rule cts:update-generation-class-rules ;
sh:rule cts:update-generation-relation-rules ;
sh:rule cts:update-generation-rules ;
sh:rule cts:update-net-extension-rules ;
sh:rule cts:update-preprocessing-rules ;
.
cts:bypass-reification
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Bypass reification (extension of UNL relations)
CONSTRUCT {
?node1 ?unlRel ?node2.
}
WHERE {
?rel unl:has_source ?node1.
?rel unl:has_target ?node2.
?rel a ?unlRel.
} """ ;
sh:order 1.1 ;
.
cts:class_generation
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "class generation" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:add-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:complement-composite-class ;
sh:rule cts:generate-atom-class ;
sh:rule cts:generate-atom-instance ;
sh:rule cts:generate-composite-class-from-list-net ;
.
cts:complement-composite-class
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Complement composite classes with feature relation
CONSTRUCT {
# Complement with feature relation
?compositeClassUri sys:has_feature ?featureUri.
}
WHERE {
# net1: Composite List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:composite.
# -- Item
?net1 net:has_item ?itemObject.
?itemObject net:has_class_uri ?compositeClassUri.
?itemObject net:has_feature ?featureObject.
# -- Feature
?featureObject a net:Object.
?featureObject net:has_class_uri ?featureUri.
}""" ;
sh:order 3.22 ;
.
cts:compose-atom-with-list-by-mod-1
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compose an atom net and a list net (with distinct item classes)
CONSTRUCT {
# Object: Composite
?newObject a net:Object.
?newObject net:objectType net:composite.
?newObject net:has_node ?uw1, ?uw3.
?newObject net:has_mother_class ?net1Mother.
?newObject net:has_parent_class ?net1Class.
?newObject net:has_class ?subConcept.
?newObject net:has_concept ?subConcept.
?newObject net:has_feature ?net2Item.
# Net: Composite List
?newNet a net:Instance.
?newNet net:type net:list.
?newNet net:type ?listSubType.
?newNet net:listOf net:composite.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1, ?uw2, ?uw3.
?newNet net:entityClass ?net1ParentClass.
?newNet net:has_parent ?net1Object.
?newNet net:has_item ?newObject.
}
WHERE {
# net1: atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?net1Object.
?net1Object net:has_mother_class ?net1Mother.
?net1Object net:has_parent_class ?net1ParentClass.
?net1Object net:has_class ?net1Class.
?net1Object net:has_concept ?net1Concept.
# condition: mod(net1, net2)
?uw1 unl:mod ?uw2.
# net2: list
?net2 a net:Instance.
?net2 net:type net:list.
?net2 net:type ?listSubType.
?net2 net:listOf net:atom.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2, ?uw3.
?net2 net:has_item ?net2Item.
?net2Item net:has_node ?uw3.
?net2Item net:has_parent_class ?net2ParentClass.
?net2Item net:has_concept ?net2Concept.
# Filter
FILTER NOT EXISTS { ?net2 net:has_node ?uw1 }.
FILTER ( ?net1ParentClass != ?net2ParentClass ).
# Label: Id, concept
?uw1 unl:has_id ?uw1Id.
?uw2 unl:has_id ?uw2Id.
?uw3 unl:has_id ?uw3Id.
BIND (concat( ?net2Concept, '_', ?net1Concept) AS ?subConcept).
# URI (for Object)
cprm:Config_Parameters cprm:netURI ?netURI.
cprm:Config_Parameters cprm:objectRef ?objectRef.
net:composite rdfs:label ?compositeLabel.
BIND (concat( ?netURI, ?objectRef, ?compositeLabel, '_') AS ?o1).
BIND (concat(?o1, ?uw1Id, '-', ?uw3Id) AS ?o2).
BIND (uri(?o2) AS ?newObject).
# URI (for List Net)
cprm:Config_Parameters cprm:netURI ?netURI.
net:list rdfs:label ?listLabel.
net:composite rdfs:label ?compositeLabel.
BIND (concat( ?netURI, ?listLabel, '_', ?compositeLabel, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
sh:order 2.32 ;
.
cts:compose-atom-with-list-by-mod-2
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compose an atom net and an list net (with same item classes)
CONSTRUCT {
# Net: Composite List
?newNet a net:Instance.
?newNet net:type net:list.
?newNet net:type ?listSubType.
?newNet net:listOf net:composite.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1, ?uw2, ?uw3.
?newNet net:entityClass ?net1ParentClass.
?newNet net:has_parent ?net1Object.
?newNet net:has_item ?net2Item.
}
WHERE {
# net1: atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?net1Object.
?net1Object net:has_parent_class ?net1ParentClass.
# condition: mod(net1, net2)
?uw1 unl:mod ?uw2.
# net2: list
?net2 a net:Instance.
?net2 net:type net:list.
?net2 net:listOf net:atom.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2, ?uw3.
?net2 net:has_item ?net2Item.
?net2Item net:has_node ?uw3.
?net2Item net:has_parent_class ?net2ParentClass.
?net2Item net:has_concept ?net2Concept.
# Filter
FILTER NOT EXISTS { ?net2 net:has_node ?uw1 }.
FILTER ( ?net1ParentClass = ?net2ParentClass ).
# Label: Id, subEntity
?uw1 unl:has_id ?uw1Id.
?uw2 unl:has_id ?uw2Id.
?uw3 unl:has_id ?uw3Id.
# URI (for List Net)
cprm:Config_Parameters cprm:netURI ?netURI.
net:list rdfs:label ?listLabel.
net:composite rdfs:label ?compositeLabel.
BIND (concat( ?netURI, ?listLabel, '_', ?compositeLabel, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id, '-', ?uw2Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
sh:order 2.33 ;
.
cts:compute-class-uri-of-net-object
rdf:type sh:SPARQLRule ;
rdfs:label "compute-class-uri-of-net-object" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute useful URI
CONSTRUCT {
# Net Object URI
?object net:has_mother_class_uri ?motherClassUri.
?object net:has_parent_class_uri ?parentClassUri.
?object net:has_class_uri ?objectClassUri.
}
WHERE {
# object
?object a net:Object.
?object net:objectType ?objectType.
?object net:has_mother_class ?motherClass.
?object net:has_parent_class ?parentClass.
?object net:has_class ?objectClass.
# URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI.
BIND (str(?motherClass) AS ?s1). # -- old --- BIND (concat( ?frameURI, ?parentClass) AS ?s1).
# TODO: BIND (concat( ?frameURI, ?motherClass) AS ?s1).
BIND (concat(?frameURI, ?parentClass) AS ?s2). # -- old --- BIND (concat(?s1, '#', ?parentClass) AS ?s2).
BIND (concat(?frameURI, ?objectClass) AS ?s3). # -- old --- BIND (concat(?s1, '#', ?objectClass) AS ?s3).
BIND (uri( ?s1) AS ?motherClassUri).
BIND (uri( ?s2) AS ?parentClassUri).
BIND (uri(?s3) AS ?objectClassUri).
}
VALUES ?objectType {
net:atom
net:composite
}""" ;
sh:order 2.91 ;
.
cts:compute-domain-of-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "compute-domain-of-relation-property" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute Domain of Relation Property
CONSTRUCT {
# update Relation Property: add domain
?newPropertyUri rdfs:domain ?domainClassUri.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_relation ?relationObject.
?relationObject net:has_property_uri ?newPropertyUri.
# -- Domain
?net1 net:has_possible_domain ?possibleDomainLabel1.
?domainClass rdfs:label ?possibleDomainLabel1.
FILTER (
NOT EXISTS {
?net1 net:has_possible_domain ?possibleDomainLabel2 .
?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
?anotherDomainClass rdfs:subClassOf ?domainClass.
}
)
BIND (uri( ?domainClass) AS ?domainClassUri).
}""" ;
sh:order 3.32 ;
.
cts:compute-instance-uri-of-net-object
rdf:type sh:SPARQLRule ;
rdfs:label "compute-instance-uri-of-net-object" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute useful URI
CONSTRUCT {
# Net Object URI
?object net:has_instance_uri ?objectInstanceUri.
}
WHERE {
# object
?object a net:Object.
?object net:has_parent_class ?parentClass.
?object net:has_instance ?objectInstance.
# URI (for classes and instance)
sys:Structure sys:has_frame_uri ?frameURI.
BIND (concat( ?frameURI, ?parentClass) AS ?s1).
BIND (concat(?s1, '#', ?objectInstance) AS ?s2).
BIND (uri(?s2) AS ?objectInstanceUri).
}""" ;
sh:order 2.92 ;
.
cts:compute-property-uri-of-relation-object
rdf:type sh:SPARQLRule ;
rdfs:label "compute-property-uri-of-relation-object" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute useful URI
CONSTRUCT {
# Net Object URI
?object net:has_property_uri ?objectPropertyUri.
}
WHERE {
# Object of type Relation
?object a net:Object.
?object net:objectType ?objectType.
?object net:has_parent_property ?parentProperty.
?object net:has_concept ?objectConcept.
# URI (for object property)
sys:Relation sys:has_frame_uri ?frameURI.
?parentProperty sys:has_reference ?relationReference.
BIND (concat( ?frameURI, ?relationReference) AS ?o1).
BIND (concat(?o1, '_', ?objectConcept) AS ?o2).
BIND (uri( ?o2) AS ?objectPropertyUri).
}
VALUES ?objectType {
net:relation
}""" ;
sh:order 2.91 ;
.
cts:compute-range-of-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "compute-range-of-relation-property" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute Range of Relation Property
CONSTRUCT {
# update Relation Property: add range
?newPropertyUri rdfs:range ?rangeClassUri.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_relation ?relationObject.
?relationObject net:has_property_uri ?newPropertyUri.
# -- Range
?net1 net:has_possible_range ?possibleRangeLabel1.
?rangeClass rdfs:label ?possibleRangeLabel1 .
FILTER (
NOT EXISTS {
?net1 net:has_possible_domain ?possibleRangeLabel2 .
?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
?anotherRangeClass rdfs:subClassOf ?rangeClass.
}
)
BIND (uri( ?rangeClass) AS ?rangeClassUri).
}""" ;
sh:order 3.32 ;
.
cts:create-atom-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Create Atom Net (entity)
CONSTRUCT {
# Object
?newObject a net:Object.
?newObject net:objectType net:atom.
?newObject net:has_node ?uw1.
?newObject net:has_mother_class ?atomMother.
?newObject net:has_parent_class ?atomClass.
?newObject net:has_class ?concept1.
?newObject net:has_concept ?concept1.
# Net
?newNet a net:Instance.
?newNet net:type net:atom.
?newNet net:atomOf ?atomMother.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1.
?newNet net:has_atom ?newObject.
}
WHERE {
# Atom Description (from System Ontology)
?atomMother rdfs:subClassOf* sys:Structure.
# -- old --- ?targetClass sys:has_mother_class ?atomMother.
?atomMother sys:is_class ?atomClass.
?atomMother sys:has_restriction ?restriction.
# UW: type UW-Occurrence and substructure of req sentence
?uw1 rdf:type unl:UW_Occurrence.
?uw1 unl:is_substructure_of ?req.
# ------ ?uw1 unl:is_occurrence_of ?lexTrg.
# Filter on label
?uw1 rdfs:label ?uw1Label.
FILTER ( regex(str(?uw1Label),str(?restriction)) ).
# Label: Id, concept
?uw1 unl:has_id ?uw1Id.
BIND (strbefore(?uw1Label, '(') AS ?concept1).
# URI (for Atom Object)
cprm:Config_Parameters cprm:netURI ?netURI.
cprm:Config_Parameters cprm:objectRef ?objectRef.
net:atom rdfs:label ?atomLabel.
BIND (concat( ?netURI, ?objectRef, ?atomLabel, '_') AS ?o1).
BIND (concat(?o1, ?uw1Id) AS ?o2).
BIND (uri(?o2) AS ?newObject).
# URI (for Atom Net)
cprm:Config_Parameters cprm:netURI ?netURI.
sys:Structure sys:has_reference ?classReference.
BIND (concat( ?netURI, ?classReference, '-', ?atomClass, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
sh:order 2.11 ;
.
cts:create-relation-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Create relation net
CONSTRUCT {
# Object
?newObject a net:Object.
?newObject net:objectType net:relation.
?newObject net:has_node ?uw1.
?newObject net:has_parent_property ?relationMother.
?newObject net:has_concept ?verbConcept.
# create: Relation Net
?newNet a net:Instance.
?newNet net:type net:relation.
?newNet net:relationOf ?relationMother.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1.
?newNet net:has_relation ?newObject.
}
WHERE {
# Relation Description (from System Ontology)
?targetProperty rdfs:subPropertyOf* sys:Relation.
?targetProperty sys:has_mother_property ?relationMother.
?targetProperty sys:has_reference ?relationReference.
?targetProperty sys:has_restriction_on_class ?classRestriction.
# Atom Net (net1): restricted net according to its atom category (atomOf)
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf ?classRestriction.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
# -- Verb Actor
?net1 net:has_atom ?verbObject.
?verbObject net:has_mother_class ?verbMother.
?verbObject net:has_parent_class ?verbParentClass.
?verbObject net:has_concept ?verbConcept.
# Label: Id
?uw1 unl:has_id ?uw1Id.
# URI (for Atom Object)
cprm:Config_Parameters cprm:netURI ?netURI.
cprm:Config_Parameters cprm:objectRef ?objectRef.
net:relation rdfs:label ?relationLabel.
BIND (concat( ?netURI, ?objectRef, ?relationLabel, '_') AS ?o1).
BIND (concat(?o1, ?uw1Id) AS ?o2).
BIND (uri(?o2) AS ?newObject).
# URI (for Event Net)
cprm:Config_Parameters cprm:netURI ?netURI.
sys:Property sys:has_reference ?propertyReference.
BIND (concat( ?netURI, ?propertyReference, '-', ?relationReference, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
sh:order 2.41 ;
.
cts:create-unary-atom-list-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Create an unary Atom List net
CONSTRUCT {
# Net: Atom List
?newNet a net:Instance.
?newNet net:type net:list.
?newNet net:type net:unary_list.
?newNet net:listOf net:atom.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1.
?newNet net:has_item ?object1.
}
WHERE {
# Net: Atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf ?net1Mother.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?object1.
?object1 net:has_parent_class ?net1ParentClass.
# selection: target UW of modifier (mod)
?uw0 unl:mod ?uw1.
FILTER NOT EXISTS { ?uw1 (unl:and|unl:or) ?uw2 }
# UW: type UW-Occurrence and substructure of req sentence
?uw0 rdf:type unl:UW_Occurrence.
?uw0 unl:is_substructure_of ?req.
# Label(s) / URI
?uw1 rdfs:label ?uw1Label.
?uw1 unl:has_id ?uw1Id.
cprm:Config_Parameters cprm:netURI ?netURI.
sys:Structure sys:has_reference ?classReference.
net:list rdfs:label ?listLabel.
net:atom rdfs:label ?atomLabel.
BIND (concat( ?netURI, ?classReference, '-', ?listLabel, '-', ?atomLabel, '_') AS ?s1).
BIND (concat(?s1, ?uw1Id) AS ?s2).
BIND (uri(?s2) AS ?newNet).
}""" ;
sh:order 2.21 ;
.
cts:define-uw-id
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Define an ID for each UW (occurrence)
CONSTRUCT {
?uw1 unl:has_id ?uwId.
}
WHERE {
# UW: type UW-Occurrence and substructure of req sentence
?uw1 rdf:type unl:UW_Occurrence.
?uw1 unl:is_substructure_of ?req.
# Label(s) / URI
?req unl:has_id ?reqId.
?uw1 rdfs:label ?uw1Label.
BIND (strbefore(?uw1Label, '(') AS ?concept1).
BIND (strafter(str(?uw1), \"---\") AS ?numOcc).
BIND (concat( ?reqId, '_', ?concept1, ?numOcc) AS ?uwId).
} """ ;
sh:order 1.3 ;
.
cts:dev_schemes
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "dev schemes" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:old_add-event ;
sh:rule cts:old_add-state-property ;
sh:rule cts:old_compose-agt-verb-obj-as-simple-event ;
sh:rule cts:old_compose-aoj-verb-obj-as-simple-state-property ;
sh:rule cts:old_compute-domain-range-of-event-object-properties ;
sh:rule cts:old_compute-domain-range-of-state-property-object-properties ;
.
cts:extend-atom-list-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Extend an Atom List net
CONSTRUCT {
# Update Atom List net (net1)
?net1 net:has_node ?uw2.
?net1 net:has_item ?object2.
}
WHERE {
# Net1: Atom List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:atom.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
# extension: disjunction of UW
?uw1 (unl:or|unl:and) ?uw2.
# Net2: Atom
?net2 a net:Instance.
?net2 net:type net:atom.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2.
?net2 net:has_atom ?object2.
}""" ;
sh:order 2.22 ;
.
cts:generate-atom-class
rdf:type sh:SPARQLRule ;
rdfs:label "add-entity-classes" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Generate Atom Class in Target Ontology
CONSTRUCT {
# Classification
?newClassUri rdfs:subClassOf ?parentUri.
?newClassUri rdfs:label ?atomConcept.
?newClassUri sys:from_structure ?req.
}
WHERE {
# net1: atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:has_structure ?req.
?net1 net:has_atom ?atomObject1.
?atomObject1 net:has_parent_class_uri ?parentUri.
?atomObject1 net:has_class_uri ?newClassUri.
?atomObject1 net:has_concept ?atomConcept.
# Filter: atom not present in a composite list
FILTER NOT EXISTS {
?net2 net:type net:list.
?net2 net:listOf net:composite.
?net2 net:has_item ?atomObject1.
}
}""" ;
sh:order 3.1 ;
.
cts:generate-atom-instance
rdf:type sh:SPARQLRule ;
rdfs:label "add-entity" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Generate atom instance in System Ontology
CONSTRUCT {
# Instantiation
?newInstanceUri a ?classUri.
?newInstanceUri rdfs:label ?atomInstance.
?newInstanceUri sys:from_structure ?req.
}
WHERE {
# net1: atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:has_structure ?req.
?net1 net:has_atom ?atomObject1.
?atomObject1 net:has_class_uri ?classUri.
?atomObject1 net:has_instance ?atomInstance.
?atomObject1 net:has_instance_uri ?newInstanceUri.
# Filter: entity not present in a class list
FILTER NOT EXISTS { ?net2 net:has_subClass ?atomConcept}
}""" ;
sh:order 3.1 ;
.
cts:generate-composite-class-from-list-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add Composite Class in Ontology (from Composite List net)
CONSTRUCT {
# Classification
?newClassUri rdfs:subClassOf ?parentUri.
?newClassUri rdfs:label ?compositeConcept.
?newClassUri sys:from_structure ?req.
# Instantiation (extension)
?instanceUri rdf:type ?newClassUri.
?instanceUri sys:from_structure ?req.
}
WHERE {
# net1: Composite List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:composite.
?net1 net:has_structure ?req.
?net1 net:has_parent ?parentObject.
?parentObject net:has_class_uri ?parentUri.
?parentObject net:has_instance_uri ?instanceUri.
?net1 net:has_item ?compositeObject.
?compositeObject net:has_class_uri ?newClassUri.
?compositeObject net:has_concept ?compositeConcept.
}""" ;
sh:order 3.21 ;
.
cts:generate-event-class
rdf:type sh:SPARQLRule ;
rdfs:label "add-event" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add Event Class in Target Ontology
CONSTRUCT {
# Classification
?newEventUri rdfs:subClassOf ?eventClassUri.
?newEventUri rdfs:label ?eventLabel.
?newEventUri sys:from_structure ?req.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
# -- Relation Object
?net1 net:has_relation ?relationObject.
?relationObject net:has_concept ?relationConcept.
# -- Source Object
?net1 net:has_source ?sourceObject.
?sourceObject net:has_concept ?sourceConcept.
# -- Target Object
?net1 net:has_target ?targetObject1.
?targetObject1 net:has_concept ?targetConcept.
# Label: event
BIND (concat(?sourceConcept, '-', ?relationConcept) AS ?e1).
BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
# URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI.
sys:Event sys:is_class ?eventClass.
BIND (concat( ?frameURI, ?eventClass) AS ?c1).
BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
BIND (uri( ?c1) AS ?eventClassUri).
BIND (uri(?c2) AS ?newEventUri).
}""" ;
sh:order 3.31 ;
.
cts:generate-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "add-event" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Generate Relation Property in Target Ontology
CONSTRUCT {
# update: Relation Property
?newPropertyUri a owl:ObjectProperty.
?newPropertyUri rdfs:subPropertyOf ?parentProperty.
?newPropertyUri rdfs:label ?relationConcept.
?newPropertyUri sys:from_structure ?req.
# -- old --- ?sourceInstanceUri ?newPropertyUri ?targetInstanceUri.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_structure ?req.
# -- Relation Object
?net1 net:has_relation ?relationObject.
?relationObject net:has_parent_property ?parentProperty.
?relationObject net:has_property_uri ?newPropertyUri.
# -- Source Object
# -- old --- ?net1 net:has_source ?sourceObject.
# -- old --- ?sourceObject net:has_instance_uri ?sourceInstanceUri.
# -- Target Object
# -- old --- ?net1 net:has_target ?targetObject.
# -- old --- ?targetObject net:has_instance_uri ?targetInstanceUri.
}""" ;
sh:order 3.31 ;
.
cts:generation
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "generation" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:add-conjunctive-classes-from-list-net ;
sh:rule cts:add-disjunctive-classes-from-list-net ;
sh:rule cts:complement-composite-class ;
sh:rule cts:compute-domain-of-relation-property ;
sh:rule cts:compute-range-of-relation-property ;
sh:rule cts:generate-atom-class ;
sh:rule cts:generate-atom-instance ;
sh:rule cts:generate-composite-class-from-list-net ;
sh:rule cts:generate-event-class ;
sh:rule cts:generate-relation-property ;
sh:rule cts:link-classes-by-relation-property ;
sh:rule cts:link-instances-by-relation-property ;
.
cts:init-conjunctive-atom-list-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Initialize a conjunctive Atom List net
CONSTRUCT {
# Net: Atom List
?newNet a net:Instance.
?newNet net:type net:list.
?newNet net:type net:conjunctive_list.
?newNet net:listOf net:atom.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1.
?newNet net:has_item ?object1.
}
WHERE {
# Net: Atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf ?net1Mother.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?object1.
?object1 net:has_parent_class ?net1ParentClass.
# selection: target UW of modifier (mod)
?uw1 unl:and ?uw2.
# UW: type UW-Occurrence and substructure of req sentence
?uw2 rdf:type unl:UW_Occurrence.
?uw2 unl:is_substructure_of ?req.
# Label(s) / URI
?uw1 rdfs:label ?uw1Label.
?uw1 unl:has_id ?uw1Id.
cprm:Config_Parameters cprm:netURI ?netURI.
net:list rdfs:label ?listLabel.
net:atom rdfs:label ?atomLabel.
BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
BIND (concat(?s1, ?uw1Id) AS ?s2).
BIND (uri(?s2) AS ?newNet).
}""" ;
sh:order 2.21 ;
.
cts:init-disjunctive-atom-list-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Initialize a disjunctive Atom List net
CONSTRUCT {
# Net: Atom List
?newNet a net:Instance.
?newNet net:type net:list.
?newNet net:type net:disjunctive_list.
?newNet net:listOf net:atom.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1.
?newNet net:has_item ?object1.
}
WHERE {
# Net: Atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf ?net1Mother.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?object1.
?object1 net:has_parent_class ?net1ParentClass.
# selection: target UW of modifier (mod)
?uw1 unl:or ?uw2.
# UW: type UW-Occurrence and substructure of req sentence
?uw2 rdf:type unl:UW_Occurrence.
?uw2 unl:is_substructure_of ?req.
# Label(s) / URI
?uw1 rdfs:label ?uw1Label.
?uw1 unl:has_id ?uw1Id.
cprm:Config_Parameters cprm:netURI ?netURI.
net:list rdfs:label ?listLabel.
net:atom rdfs:label ?atomLabel.
BIND (concat( ?netURI, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
BIND (concat(?s1, ?uw1Id) AS ?s2).
BIND (uri(?s2) AS ?newNet).
}""" ;
sh:order 2.21 ;
.
cts:instantiate-atom-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Instantiate atom net
CONSTRUCT {
# Object: entity
?atomObject1 net:has_instance ?instanceName.
}
WHERE {
# net1: atom
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?atomObject1.
# condition: agt/obj(uw0, uw1)
?uw0 (unl:agt | unl:obj | unl:aoj) ?uw1.
# UW: type UW-Occurrence and substructure of req sentence
?uw0 rdf:type unl:UW_Occurrence.
?uw0 unl:is_substructure_of ?req.
# Label: id, name
?uw1 unl:has_id ?uw1Id.
BIND (?uw1Id AS ?instanceName).
}""" ;
sh:order 2.12 ;
.
cts:instantiate-composite-in-list-by-extension-1
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Instantiate composite in list by extension of instances from parent element
CONSTRUCT {
?itemObject net:has_instance ?parentInstance.
}
WHERE {
# net1: Composite List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:composite.
?net1 net:has_parent ?parentObject.
?parentObject net:has_instance ?parentInstance.
?net1 net:has_item ?itemObject.
# Filter
FILTER NOT EXISTS { ?itemObject net:has_instance ?anyInstance } .
}""" ;
sh:order 2.341 ;
.
cts:instantiate-composite-in-list-by-extension-2
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Instantiate entities in class list by extension of instances (2)
CONSTRUCT {
?net2SubObject net:has_instance ?parentInstance.
}
WHERE {
# net1: Composite List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:composite.
?net1 net:has_structure ?sameReq.
?net1 net:has_parent ?parentObject.
?parentObject net:has_instance ?parentInstance.
?net1 net:has_item ?net1SubObject.
?net1SubObject net:has_concept ?sameEntity.
# net2: Another List
?net2 a net:Instance.
?net2 net:type net:list.
?net2 net:listOf net:composite.
?net2 net:has_structure ?sameReq.
?net2 net:has_parent ?net2MainObject.
?net2MainObject net:has_concept ?sameEntity.
?net2 net:has_item ?net2SubObject.
# Filter
FILTER NOT EXISTS { ?net2SubObject net:has_instance ?anyInstance } .
}""" ;
sh:order 2.342 ;
.
cts:link-classes-by-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "link-classes-by-relation-property" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Link two classes by relation property (according existence of domain and range)
CONSTRUCT {
# relation between domain/range classes
?domainClassUri ?propertyUri ?rangeClassUri.
}
WHERE {
# Relation Net (net1)
?propertyUri rdfs:domain ?domainClass.
?propertyUri rdfs:range ?rangeClass.
BIND (uri( ?domainClass) AS ?domainClassUri).
BIND (uri( ?rangeClass) AS ?rangeClassUri).
}""" ;
sh:order 3.33 ;
.
cts:link-instances-by-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "add-event" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
CONSTRUCT {
?sourceInstanceUri ?newPropertyUri ?targetInstanceUri.
}
WHERE {
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_structure ?req.
# -- Relation Object
?net1 net:has_relation ?relationObject.
?relationObject net:has_parent_property ?parentProperty.
?relationObject net:has_property_uri ?newPropertyUri.
# -- Source Object
?net1 net:has_source ?sourceObject.
?sourceObject net:has_instance_uri ?sourceInstanceUri.
# -- Target Object
?net1 net:has_target ?targetObject.
?targetObject net:has_instance_uri ?targetInstanceUri.
}""" ;
sh:order 3.33 ;
.
cts:link-to-scope-entry
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Link UNL relation to scope entry
# (by connecting the source node of the scope to the entry node of the scope)
CONSTRUCT {
?node1Occ ?unlRel ?node2Occ.
}
WHERE {
?scope rdf:type unl:UNL_Scope.
?node1Occ unl:is_source_of ?rel.
?rel unl:has_target ?scope.
?scope unl:is_scope_of ?scopeRel.
?scopeRel unl:has_source ?node2Occ.
?node2Occ unl:has_attribute \".@entry\".
?rel a ?unlRel.
} """ ;
sh:order 1.2 ;
.
cts:net_extension
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "net extension" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:append-domain-to-relation-net ;
sh:rule cts:append-range-to-relation-net ;
sh:rule cts:compose-atom-with-list-by-mod-1 ;
sh:rule cts:compose-atom-with-list-by-mod-2 ;
sh:rule cts:compute-class-uri-of-net-object ;
sh:rule cts:compute-instance-uri-of-net-object ;
sh:rule cts:compute-property-uri-of-relation-object ;
sh:rule cts:create-atom-net ;
sh:rule cts:create-relation-net ;
sh:rule cts:create-unary-atom-list-net ;
sh:rule cts:extend-atom-list-net ;
sh:rule cts:init-conjunctive-atom-list-net ;
sh:rule cts:init-disjunctive-atom-list-net ;
sh:rule cts:instantiate-atom-net ;
sh:rule cts:instantiate-composite-in-list-by-extension-1 ;
sh:rule cts:instantiate-composite-in-list-by-extension-2 ;
sh:rule cts:specify-axis-of-atom-list-net ;
.
cts:old_add-event
rdf:type sh:SPARQLRule ;
rdfs:label "add-event" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add Verb class / instance in System Ontology
CONSTRUCT {
# Classification
?newEventUri rdfs:subClassOf ?eventClassUri.
?newEventUri rdfs:label ?eventLabel.
?newEventUri sys:from_structure ?req.
# Object Property
?newEventObjectPropertyUri a owl:ObjectProperty.
?newEventObjectPropertyUri rdfs:subPropertyOf ?eventObjectPropertyUri.
?newEventObjectPropertyUri rdfs:label ?verbConcept.
?newEventObjectPropertyUri sys:from_structure ?req.
?actorInstanceUri ?newEventObjectPropertyUri ?targetInstanceUri.
}
WHERE {
# net1: entity
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:Event.
?net1 net:has_structure ?req.
?net1 net:has_verb ?verbObject1.
?verbObject1 net:has_parent_class ?verbClass.
?verbObject1 net:has_concept ?verbConcept.
?net1 net:has_actor ?actorObject1.
?actorObject1 net:has_parent_class ?actorClass.
?actorObject1 net:has_concept ?actorConcept.
?actorObject1 net:has_instance ?actorInstance.
?actorObject1 net:has_instance_uri ?actorInstanceUri.
?net1 net:has_target ?targetObject1.
?targetObject1 net:has_parent_class ?targetClass.
?targetObject1 net:has_concept ?targetConcept.
?targetObject1 net:has_instance ?targetInstance.
?targetObject1 net:has_instance_uri ?targetInstanceUri.
# Label: event
BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
BIND (concat(?e1, '-', ?targetConcept) AS ?eventLabel).
# URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI.
sys:Event sys:is_class ?eventClass.
BIND (concat( ?frameURI, ?eventClass) AS ?c1).
BIND (concat(?c1, '_', ?eventLabel) AS ?c2).
BIND (uri( ?c1) AS ?eventClassUri).
BIND (uri(?c2) AS ?newEventUri).
# URI (for object property)
sys:Event sys:has_object_property ?eventObjectProperty.
BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o1) AS ?eventObjectPropertyUri).
BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
}""" ;
sh:order 0.331 ;
.
cts:old_add-state-property
rdf:type sh:SPARQLRule ;
rdfs:label "add-event" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Add Verb class / instance in System Ontology
CONSTRUCT {
# Classification
?newStatePropertyUri rdfs:subClassOf ?statePropertyClassUri.
?newStatePropertyUri rdfs:label ?statePropertyLabel.
?newStatePropertyUri sys:from_structure ?req.
# Object Property
?newStatePropertyObjectPropertyUri a owl:ObjectProperty.
?newStatePropertyObjectPropertyUri rdfs:subPropertyOf ?statePropertyObjectPropertyUri.
?newStatePropertyObjectPropertyUri rdfs:label ?verbConcept.
?newStatePropertyObjectPropertyUri sys:from_structure ?req.
?actorInstanceUri ?newStatePropertyObjectPropertyUri ?targetInstanceUri.
}
WHERE {
# net1: state property
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:State_Property.
?net1 net:has_structure ?req.
?net1 net:has_verb ?verbObject1.
?verbObject1 net:has_parent_class ?verbClass.
?verbObject1 net:has_concept ?verbConcept.
?net1 net:has_actor ?actorObject1.
?actorObject1 net:has_parent_class ?actorClass.
?actorObject1 net:has_concept ?actorConcept.
?actorObject1 net:has_instance ?actorInstance.
?actorObject1 net:has_instance_uri ?actorInstanceUri.
?net1 net:has_target ?targetObject1.
?targetObject1 net:has_parent_class ?targetClass.
?targetObject1 net:has_concept ?targetConcept.
?targetObject1 net:has_instance ?targetInstance.
?targetObject1 net:has_instance_uri ?targetInstanceUri.
# Label: event
BIND (concat(?actorConcept, '-', ?verbConcept) AS ?e1).
BIND (concat(?e1, '-', ?targetConcept) AS ?statePropertyLabel).
# URI (for classes)
sys:Structure sys:has_frame_uri ?frameURI.
sys:State_Property sys:is_class ?statePropertyClass.
BIND (concat( ?frameURI, ?statePropertyClass) AS ?c1).
BIND (concat(?c1, '_', ?statePropertyLabel) AS ?c2).
BIND (uri( ?c1) AS ?statePropertyClassUri).
BIND (uri(?c2) AS ?newStatePropertyUri).
# URI (for object property)
sys:State_Property sys:has_object_property ?statePropertyObjectProperty.
BIND (concat( ?frameURI, ?statePropertyObjectProperty) AS ?o1).
BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o1) AS ?statePropertyObjectPropertyUri).
BIND (uri( ?o2) AS ?newStatePropertyObjectPropertyUri).
}""" ;
sh:order 0.331 ;
.
cts:old_compose-agt-verb-obj-as-simple-event
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compose a subject (agt), an action Verb and an object (obj) to obtain an event
CONSTRUCT {
# Net: Event
?newNet a net:Instance.
?newNet net:type net:atom.
?newNet net:atomOf sys:Event.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1, ?uw2, ?uw3.
?newNet net:has_actor ?actorObject.
?newNet net:has_verb ?verbObject.
?newNet net:has_target ?targetObject.
?newNet net:has_possible_domain ?domainClass.
?newNet net:has_possible_range ?rangeClass.
}
WHERE {
# net1: verb
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:action_verb.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?verbObject.
# net2: entity (actor)
?net2 a net:Instance.
?net2 net:type net:atom.
# -- old --- ?net2 net:atomOf sys:Entity.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2.
?net2 net:has_atom ?actorObject.
# net3: entity (target)
?net3 a net:Instance.
?net3 net:type net:atom.
# -- old --- ?net3 net:atomOf sys:Entity.
?net3 net:has_structure ?req.
?net3 net:has_node ?uw3.
?net3 net:has_atom ?targetObject.
# condition: agt(net1, net2) et obj(net1, net3)
?uw1 unl:agt ?uw2.
?uw1 (unl:obj|unl:res) ?uw3.
# Label: Id
?uw1 unl:has_id ?uw1Id.
?uw2 unl:has_id ?uw2Id.
?uw3 unl:has_id ?uw3Id.
# Possible domain/range
?actorObject net:has_instance ?actorObjectInstance.
?allActorObject net:has_instance ?actorObjectInstance.
?allActorObject net:has_concept ?domainClass.
?targetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_concept ?rangeClass.
# URI (for Event Net)
cprm:Config_Parameters cprm:netURI ?netURI.
net:event rdfs:label ?eventLabel.
BIND (concat( ?netURI, ?eventLabel, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
sh:order 0.241 ;
.
cts:old_compose-aoj-verb-obj-as-simple-state-property
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compose a subject (aoj), an attributibe Verb and an object (obj) / result (res) to obtain a state property
CONSTRUCT {
# Net: State Property
?newNet a net:Instance.
?newNet net:type net:atom.
?newNet net:atomOf sys:State_Property.
?newNet net:has_structure ?req.
?newNet net:has_node ?uw1, ?uw2, ?uw3.
?newNet net:has_actor ?actorObject.
?newNet net:has_verb ?verbObject.
?newNet net:has_target ?targetObject.
?newNet net:has_possible_domain ?domainClass.
?newNet net:has_possible_range ?rangeClass.
}
WHERE {
# net1: verb
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:attributive_verb.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
?net1 net:has_atom ?verbObject.
# net2: entity (actor)
?net2 a net:Instance.
?net2 net:type net:atom.
# -- old --- ?net2 net:atomOf sys:Entity.
?net2 net:has_structure ?req.
?net2 net:has_node ?uw2.
?net2 net:has_atom ?actorObject.
# net3: entity (target)
?net3 a net:Instance.
?net3 net:type net:atom.
# -- old --- ?net3 net:atomOf sys:Entity.
?net3 net:has_structure ?req.
?net3 net:has_node ?uw3.
?net3 net:has_atom ?targetObject.
# condition: aoj(net1, net2) et obj(net1, net3)
?uw1 unl:aoj ?uw2.
?uw1 (unl:obj|unl:res) ?uw3.
# Label: Id
?uw1 unl:has_id ?uw1Id.
?uw2 unl:has_id ?uw2Id.
?uw3 unl:has_id ?uw3Id.
# Possible domain/range
?actorObject net:has_instance ?actorObjectInstance.
?allActorObject net:has_instance ?actorObjectInstance.
?allActorObject net:has_concept ?domainClass.
?targetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_concept ?rangeClass.
# URI (for State Property Net)
cprm:Config_Parameters cprm:netURI ?netURI.
net:state_property rdfs:label ?statePropertyLabel.
BIND (concat( ?netURI, ?statePropertyLabel, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id, '-', ?uw2Id, '-', ?uw3Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
sh:order 0.241 ;
.
cts:old_compute-domain-range-of-event-object-properties
rdf:type sh:SPARQLRule ;
rdfs:label "compute-domain-range-of-object-properties" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute domain/range of object properties
CONSTRUCT {
# Object Property: domain, range and relation between domain/range classes
?newEventObjectPropertyUri rdfs:domain ?domainClass.
?newEventObjectPropertyUri rdfs:range ?rangeClass.
?domainClass ?newEventObjectPropertyUri ?rangeClass. # relation between domain/range classes
}
WHERE {
# net1: event
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:Event.
?net1 net:has_structure ?req.
?net1 net:has_verb ?verbObject1.
?verbObject1 net:has_concept ?verbConcept.
# domain
?net1 net:has_possible_domain ?possibleDomainLabel1.
?domainClass rdfs:label ?possibleDomainLabel1 .
FILTER (
NOT EXISTS {
?net1 net:has_possible_domain ?possibleDomainLabel2 .
?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
?anotherDomainClass rdfs:subClassOf ?domainClass.
}
)
# range
?net1 net:has_possible_range ?possibleRangeLabel1.
?rangeClass rdfs:label ?possibleRangeLabel1 .
FILTER (
NOT EXISTS {
?net1 net:has_possible_domain ?possibleRangeLabel2 .
?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
?anotherRangeClass rdfs:subClassOf ?rangeClass.
}
)
# URI (for object property)
sys:Structure sys:has_frame_uri ?frameURI.
sys:Event sys:has_object_property ?eventObjectProperty.
BIND (concat( ?frameURI, ?eventObjectProperty) AS ?o1).
BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o2) AS ?newEventObjectPropertyUri).
}""" ;
sh:order 0.332 ;
.
cts:old_compute-domain-range-of-state-property-object-properties
rdf:type sh:SPARQLRule ;
rdfs:label "compute-domain-range-of-object-properties" ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Compute domain/range of object properties
CONSTRUCT {
# Object Property: domain, range and relation between domain/range classes
?objectPropertyUri rdfs:domain ?domainClass.
?objectPropertyUri rdfs:range ?rangeClass.
?domainClass ?objectPropertyUri ?rangeClass. # relation between domain/range classes
}
WHERE {
# net1: event
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:State_Property.
?net1 net:has_structure ?req.
?net1 net:has_verb ?verbObject1.
?verbObject1 net:has_concept ?verbConcept.
# domain
?net1 net:has_possible_domain ?possibleDomainLabel1.
?domainClass rdfs:label ?possibleDomainLabel1 .
FILTER (
NOT EXISTS {
?net1 net:has_possible_domain ?possibleDomainLabel2 .
?anotherDomainClass rdfs:label ?possibleDomainLabel2 .
?anotherDomainClass rdfs:subClassOf ?domainClass.
}
)
# range
?net1 net:has_possible_range ?possibleRangeLabel1.
?rangeClass rdfs:label ?possibleRangeLabel1 .
FILTER (
NOT EXISTS {
?net1 net:has_possible_domain ?possibleRangeLabel2 .
?anotherRangeClass rdfs:label ?possibleRangeLabel2 .
?anotherRangeClass rdfs:subClassOf ?rangeClass.
}
)
# URI (for object property)
sys:Structure sys:has_frame_uri ?frameURI.
sys:State_Property sys:has_object_property ?objectPropertyRef.
BIND (concat( ?frameURI, ?objectPropertyRef) AS ?o1).
BIND (concat(?o1, '#', ?verbConcept) AS ?o2).
BIND (uri( ?o2) AS ?objectPropertyUri).
}""" ;
sh:order 0.332 ;
.
cts:preprocessing
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "preprocessing" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:bypass-reification ;
sh:rule cts:define-uw-id ;
sh:rule cts:link-to-scope-entry ;
sh:rule cts:update-batch-execution-rules ;
sh:rule cts:update-generation-class-rules ;
sh:rule cts:update-generation-relation-rules ;
sh:rule cts:update-generation-rules ;
sh:rule cts:update-net-extension-rules ;
sh:rule cts:update-preprocessing-rules ;
.
cts:relation_generation
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "relation generation" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:compute-domain-of-relation-property ;
sh:rule cts:compute-range-of-relation-property ;
sh:rule cts:generate-event-class ;
sh:rule cts:generate-relation-property ;
sh:rule cts:link-classes-by-relation-property ;
sh:rule cts:link-instances-by-relation-property ;
.
cts:relation_generation_1
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "relation generation 1" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:generate-event-class ;
sh:rule cts:generate-relation-property ;
.
cts:relation_generation_2
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "relation generation 2" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:compute-domain-of-relation-property ;
sh:rule cts:compute-range-of-relation-property ;
.
cts:relation_generation_3_1
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "relation generation 3 1" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:link-classes-by-relation-property ;
.
cts:relation_generation_3_2
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "relation generation 3 2" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:link-instances-by-relation-property ;
.
cts:relation_generation_dga_patch
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
rdfs:label "relation generation" ;
rdfs:subClassOf cts:Transduction_Schemes ;
sh:rule cts:compute-domain-of-relation-property ;
sh:rule cts:compute-range-of-relation-property ;
sh:rule cts:generate-event-class ;
sh:rule cts:generate-relation-property ;
sh:rule cts:link-instances-by-relation-property ;
.
cts:specify-axis-of-atom-list-net
rdf:type sh:SPARQLRule ;
sh:construct """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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX unl: <https://unl.tetras-libre.fr/rdf/schema#>
PREFIX net: <https://unsel.tetras-libre.fr/tenet/semantic-net#>
PREFIX cprm: <https://unsel.tetras-libre.fr/tenet/config/parameters#>
PREFIX req: <https://unsel.tetras-libre.fr/tenet/frame/requirement-ontology#>
PREFIX sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/>
PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Specify axis of Atom List net
CONSTRUCT {
# Update Atom List net (net1)
?net1 net:listBy ?unlRel.
}
WHERE {
# UW: type UW-Occurrence and substructure of req sentence
?uw0 rdf:type unl:UW_Occurrence.
?uw0 unl:is_substructure_of ?req.
# Net: Atom List
?net1 a net:Instance.
?net1 net:type net:list.
?net1 net:listOf net:atom.
?net1 net:has_node ?uw1.
# selection: target UW of modifier (mod)
?uw0 ?unlRel ?uw1.
FILTER NOT EXISTS { ?net1 net:has_node ?uw0 }.
}""" ;
sh:order 2.23 ;
.
cts:update-batch-execution-rules
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
cts:batch_execution sh:rule ?rule.
}
WHERE {
?nodeShapes sh:rule ?rule.
}
VALUES ?nodeShapes {
cts:preprocessing
cts:net_extension
cts:generation
}""" ;
sh:order 1.09 ;
.
cts:update-generation-class-rules
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
cts:class_generation sh:rule ?rule.
}
WHERE {
{ ?rule rdf:type sh:SPARQLRule.
?rule sh:order ?order.
FILTER ( strStarts(str(?order),\"3.1\") ). }
UNION
{ ?rule rdf:type sh:SPARQLRule.
?rule sh:order ?order.
FILTER ( strStarts(str(?order),\"3.2\") ). }
}""" ;
sh:order 1.031 ;
.
cts:update-generation-relation-rules
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
cts:relation_generation sh:rule ?rule.
}
WHERE {
?rule rdf:type sh:SPARQLRule.
?rule sh:order ?order.
FILTER ( strStarts(str(?order),\"3.3\") ).
}""" ;
sh:order 1.032 ;
.
cts:update-generation-rules
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
cts:generation sh:rule ?rule.
}
WHERE {
?rule rdf:type sh:SPARQLRule.
?rule sh:order ?order.
FILTER ( strStarts(str(?order),\"3.\") ).
}""" ;
sh:order 1.03 ;
.
cts:update-net-extension-rules
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
cts:net_extension sh:rule ?rule.
}
WHERE {
?rule rdf:type sh:SPARQLRule.
?rule sh:order ?order.
FILTER ( strStarts(str(?order),\"2.\") ).
}""" ;
sh:order 1.02 ;
.
cts:update-preprocessing-rules
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX cts: <https://unsel.tetras-libre.fr/tenet/transduction-schemes#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX sh: <http://www.w3.org/ns/shacl#>
CONSTRUCT {
cts:preprocessing sh:rule ?rule.
}
WHERE {
?rule rdf:type sh:SPARQLRule.
?rule sh:order ?order.
FILTER ( strStarts(str(?order),\"1.\") ).
}""" ;
sh:order 1.01 ;
.