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

CTS update: structural revision of sys:Property

parent 1aed1978
No related branches found
No related tags found
No related merge requests found
......@@ -95,11 +95,6 @@ net:featureClass
rdfs:label "feature class" ;
rdfs:subPropertyOf net:objectValue ;
.
net:has_actor
rdf:type rdf:Property ;
rdfs:label "has actor" ;
rdfs:subPropertyOf net:has_atom ;
.
net:has_atom
rdf:type rdf:Property ;
rdfs:label "has atom" ;
......@@ -190,6 +185,21 @@ net:has_possible_range
rdfs:label "has possible range" ;
rdfs:subPropertyOf net:has_object ;
.
net:has_relation
rdf:type rdf:Property ;
rdfs:label "has relation" ;
rdfs:subPropertyOf net:has_relation_value ;
.
net:has_relation_value
rdf:type rdf:Property ;
rdfs:label "has relation value" ;
rdfs:subPropertyOf net:has_object ;
.
net:has_source
rdf:type rdf:Property ;
rdfs:label "has source" ;
rdfs:subPropertyOf net:has_relation_value ;
.
net:has_structure
rdf:type rdf:Property ;
rdfs:label "Linguistic Structure (in UNL Document)" ;
......@@ -198,12 +208,7 @@ net:has_structure
net:has_target
rdf:type rdf:Property ;
rdfs:label "has target" ;
rdfs:subPropertyOf net:has_atom ;
.
net:has_verb
rdf:type rdf:Property ;
rdfs:label "has verb" ;
rdfs:subPropertyOf net:has_atom ;
rdfs:subPropertyOf net:has_relation_value ;
.
net:list
rdf:type owl:Class ;
......
......@@ -146,9 +146,8 @@ WHERE {
}""" ;
sh:order 3.23 ;
.
cts:add-event
cts:append-domain-to-relation-net
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#>
......@@ -160,60 +159,36 @@ 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
# -- Append possible domain, actor to relation nets
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.
# update: Relation Net (net1)
?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_source ?sourceObject.
?net1 net:has_possible_domain ?domainClass.
}
WHERE {
# net1: entity
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:Event.
?net1 net:type net:relation.
?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).
?net1 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_instance ?sourceInstance.
?anySourceObject net:has_instance ?sourceInstance.
?anySourceObject net:has_concept ?domainClass.
}""" ;
sh:order 3.31 ;
sh:order 2.42 ;
.
cts:add-state-property
cts:append-range-to-relation-net
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#>
......@@ -225,56 +200,33 @@ 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
# -- Append possible range, target to relation nets
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.
# update: Relation Net (net1)
?net1 net:has_node ?uw1, ?uw2.
?net1 net:has_target ?targetObject.
?net1 net:has_possible_range ?rangeClass.
}
WHERE {
# net1: state property
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf sys:State_Property.
?net1 net:type net:relation.
?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).
?net1 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_instance ?targetObjectInstance.
?allTargetObject net:has_instance ?targetObjectInstance.
?allTargetObject net:has_concept ?rangeClass.
}""" ;
sh:order 3.31 ;
sh:order 2.42 ;
.
cts:batch_execution
rdf:type owl:Class ;
......@@ -283,18 +235,16 @@ cts: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:add-event ;
sh:rule cts:add-state-property ;
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-agt-verb-obj-as-simple-event ;
sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ;
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-range-of-event-object-properties ;
sh:rule cts:compute-domain-range-of-state-property-object-properties ;
sh:rule cts:compute-domain-of-relation-property ;
sh:rule cts:compute-instance-uri-of-net-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 ;
......@@ -303,11 +253,14 @@ cts:batch_execution
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-to-scope-entry ;
sh:rule cts:specify-axis-of-atom-list-net ;
.
......@@ -372,150 +325,6 @@ WHERE {
}""" ;
sh:order 3.22 ;
.
cts: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 2.41 ;
.
cts: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 2.41 ;
.
cts:compose-atom-with-list-by-mod-1
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
......@@ -586,7 +395,8 @@ WHERE {
# URI (for Object)
cprm:Config_Parameters cprm:netURI ?netURI.
cprm:Config_Parameters cprm:objectRef ?objectRef.
BIND (concat( ?netURI, ?objectRef) AS ?o1).
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)
......@@ -701,9 +511,9 @@ WHERE {
}""" ;
sh:order 3.01 ;
.
cts:compute-domain-range-of-event-object-properties
cts:compute-domain-of-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "compute-domain-range-of-object-properties" ;
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#>
......@@ -715,22 +525,19 @@ 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
# -- Compute Domain of Relation Property
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
# update Relation Property: add domain
?newPropertyUri rdfs:domain ?domainClass.
}
WHERE {
# net1: event
# Relation Net (net1)
?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:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_relation ?relationObject.
?relationObject net:has_concept ?relationConcept.
# -- Domain
?net1 net:has_possible_domain ?possibleDomainLabel1.
?domainClass rdfs:label ?possibleDomainLabel1.
FILTER (
......@@ -740,28 +547,18 @@ WHERE {
?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).
sys:Relation sys:has_frame_uri ?frameURI.
?relationMother sys:has_reference ?relationReference.
BIND (concat( ?frameURI, ?relationReference) AS ?o1).
BIND (concat(?o1, '_', ?relationConcept) AS ?o2).
BIND (uri( ?o2) AS ?newPropertyUri).
}""" ;
sh:order 3.32 ;
.
cts:compute-domain-range-of-state-property-object-properties
cts:compute-instance-uri-of-net-object
rdf:type sh:SPARQLRule ;
rdfs:label "compute-domain-range-of-object-properties" ;
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#>
......@@ -773,53 +570,27 @@ 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
# -- Compute useful URI
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
# Net Object URI
?object net:has_instance_uri ?objectInstanceUri.
}
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)
# 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.
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).
BIND (concat( ?frameURI, ?parentClass) AS ?s1).
BIND (concat(?s1, '#', ?objectInstance) AS ?s2).
BIND (uri(?s2) AS ?objectInstanceUri).
}""" ;
sh:order 3.32 ;
sh:order 3.02 ;
.
cts:compute-instance-uri-of-net-object
cts:compute-range-of-relation-property
rdf:type sh:SPARQLRule ;
rdfs:label "compute-instance-uri-of-net-object" ;
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#>
......@@ -831,23 +602,36 @@ 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
# -- Compute Range of Relation Property
CONSTRUCT {
# Net Object URI
?object net:has_instance_uri ?objectInstanceUri.
# update Relation Property: add range
?newPropertyUri rdfs:range ?rangeClass.
}
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).
# Relation Net (net1)
?net1 a net:Instance.
?net1 net:type net:relation.
?net1 net:relationOf ?relationMother.
?net1 net:has_relation ?relationObject.
?relationObject net:has_concept ?relationConcept.
# -- 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:Relation sys:has_frame_uri ?frameURI.
?relationMother sys:has_reference ?relationReference.
BIND (concat( ?frameURI, ?relationReference) AS ?o1).
BIND (concat(?o1, '_', ?relationConcept) AS ?o2).
BIND (uri( ?o2) AS ?newPropertyUri).
}""" ;
sh:order 3.02 ;
sh:order 3.32 ;
.
cts:create-atom-net
rdf:type sh:SPARQLRule ;
......@@ -899,12 +683,14 @@ WHERE {
# URI (for Atom Object)
cprm:Config_Parameters cprm:netURI ?netURI.
cprm:Config_Parameters cprm:objectRef ?objectRef.
BIND (concat( ?netURI, ?objectRef) AS ?o1).
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.
BIND (concat( ?netURI, ?atomClass, '_') AS ?n1).
sys:Structure sys:has_reference ?classReference.
BIND (concat( ?netURI, ?classReference, '-', ?atomClass, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
......@@ -925,15 +711,21 @@ PREFIX fprm: <https://unsel.tetras-libre.fr/tenet/frame/parameters#>
# -- Create relation net
CONSTRUCT {
# Net: Relation
# Object
?newObject a net:Object.
?newObject net:objectType net:relation.
?newObject net:has_node ?uw1.
?newObject net:has_mother_class ?verbMother.
?newObject net:has_parent_class ?verbParentClass.
?newObject net:has_class ?verbConcept.
?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_verb ?verbObject.
# -- todo? --- ?newNet net:has_possible_domain ?domainClass.
# -- todo? --- ?newNet net:has_possible_range ?rangeClass.
?newNet net:has_relation ?newObject.
}
WHERE {
# Relation Description (from System Ontology)
......@@ -941,20 +733,30 @@ WHERE {
?targetProperty sys:has_mother_property ?relationMother.
?targetProperty sys:has_reference ?relationReference.
?targetProperty sys:has_restriction_on_class ?classRestriction.
# net1: atom of relation
# Atom Net (net1): restricted net according to its atom category (atomOf)
?net1 a net:Instance.
?net1 net:type net:atom.
?net1 net:atomOf ?atomCategory.
?atomCategory rdfs:subClassOf* ?classRestriction.
?net1 net:atomOf ?classRestriction.
?net1 net:has_structure ?req.
?net1 net:has_node ?uw1.
# -- Verb Actor
?net1 net:has_atom ?verbObject.
?verbObject net:has_parent_class ?classRestriction.
?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.
BIND (concat( ?netURI, ?relationReference, '_') AS ?n1).
sys:Property sys:has_reference ?propertyReference.
BIND (concat( ?netURI, ?propertyReference, '-', ?relationReference, '_') AS ?n1).
BIND (concat(?n1, ?uw1Id) AS ?n2).
BIND (uri(?n2) AS ?newNet).
}""" ;
......@@ -1003,9 +805,10 @@ WHERE {
?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, ?listLabel, '_', ?atomLabel, '_') AS ?s1).
BIND (concat( ?netURI, ?classReference, '-', ?listLabel, '-', ?atomLabel, '_') AS ?s1).
BIND (concat(?s1, ?uw1Id) AS ?s2).
BIND (uri(?s2) AS ?newNet).
}""" ;
......@@ -1046,6 +849,12 @@ cts:dev_schemes
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:entity_extraction
rdf:type owl:Class ;
......@@ -1065,7 +874,7 @@ cts:event_extraction
rdf:type sh:NodeShape ;
rdfs:label "event extraction" ;
rdfs:subClassOf cts:net_extension ;
sh:rule cts:compose-agt-verb-obj-as-simple-event ;
sh:rule cts:old_compose-agt-verb-obj-as-simple-event ;
.
cts:extend-atom-list-net
rdf:type sh:SPARQLRule ;
......@@ -1124,7 +933,7 @@ 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 System Ontology
# -- Generate Atom Class in Target Ontology
CONSTRUCT {
# Classification
?newClassUri rdfs:subClassOf ?parentUri.
......@@ -1222,6 +1031,110 @@ WHERE {
}""" ;
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.
# -- old --- ?relationObject net:has_parent_class ?relationParentClass.
# -- Source Object
?net1 net:has_source ?sourceObject.
?sourceObject net:has_concept ?sourceConcept.
# -- old --- ?sourceObject net:has_instance ?sourceInstance.
# -- old --- ?sourceObject net:has_instance_uri ?sourceInstanceUri.
# -- old --- ?sourceObject net:has_parent_class ?sourceParentClass.
# -- Target Object
?net1 net:has_target ?targetObject1.
?targetObject1 net:has_concept ?targetConcept.
# -- old --- ?targetObject1 net:has_instance ?targetInstance.
# -- old --- ?targetObject1 net:has_instance_uri ?targetInstanceUri.
# -- old --- ?targetObject1 net:has_parent_class ?targetParentClass.
# 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 ?relationMother.
?newPropertyUri rdfs:label ?relationConcept.
?newPropertyUri sys:from_structure ?req.
?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_concept ?relationConcept.
# -- 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.
# URI (for object property)
sys:Relation sys:has_frame_uri ?frameURI.
?relationMother sys:has_reference ?relationReference.
BIND (concat( ?frameURI, ?relationReference) AS ?o1).
BIND (concat(?o1, '_', ?relationConcept) AS ?o2).
BIND (uri( ?o2) AS ?newPropertyUri).
}""" ;
sh:order 3.31 ;
.
cts:generation
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
......@@ -1229,14 +1142,14 @@ cts: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:add-event ;
sh:rule cts:add-state-property ;
sh:rule cts:complement-composite-class ;
sh:rule cts:compute-domain-range-of-event-object-properties ;
sh:rule cts:compute-domain-range-of-state-property-object-properties ;
sh:rule cts:generate-atom-class ;
sh:rule cts:generate-atom-instance ;
sh:rule cts:generate-composite-class-from-list-net ;
sh:rule cts:old_add-event ;
sh:rule cts:old_add-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:init-conjunctive-atom-list-net
rdf:type sh:SPARQLRule ;
......@@ -1444,6 +1357,32 @@ WHERE {
}""" ;
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
?domainClass ?propertyUri ?rangeClass.
}
WHERE {
# Relation Net (net1)
?propertyUri rdfs:domain ?domainClass.
?propertyUri rdfs:range ?rangeClass.
}""" ;
sh:order 3.33 ;
.
cts:link-to-scope-entry
rdf:type sh:SPARQLRule ;
sh:construct """PREFIX owl: <http://www.w3.org/2002/07/owl#>
......@@ -1479,6 +1418,396 @@ cts:net_extension
rdfs:label "net extension" ;
rdfs:subClassOf cts:Transduction_Schemes ;
.
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:postprocessing
rdf:type owl:Class ;
rdf:type sh:NodeShape ;
......@@ -1531,7 +1860,7 @@ cts:state_property_extraction
rdf:type sh:NodeShape ;
rdfs:label "state property extraction" ;
rdfs:subClassOf cts:net_extension ;
sh:rule cts:compose-aoj-verb-obj-as-simple-state-property ;
sh:rule cts:old_compose-aoj-verb-obj-as-simple-state-property ;
.
cts:verb_extraction
rdf:type owl:Class ;
......
......@@ -13,6 +13,7 @@
@prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> .
@prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> .
@prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .
@prefix sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://unsel.tetras-libre.fr/tenet/frame/system-ontology>
......@@ -25,6 +26,11 @@ sys:Abstraction
rdfs:subClassOf sys:Structure ;
sys:is_class "Abstraction" ;
.
sys:Annotation
rdf:type rdf:Property ;
rdfs:label "structure property" ;
rdfs:subPropertyOf sys:Property ;
.
sys:Entity
rdf:type owl:Class ;
rdfs:label "entity"@en ;
......@@ -47,13 +53,26 @@ sys:Feature
rdfs:subClassOf sys:Structure ;
sys:is_class "Feature" ;
.
sys:ObjectProperty
rdf:type rdf:Property ;
rdfs:label "Object Property" ;
rdfs:subPropertyOf sys:Property ;
.
sys:Property
rdf:type rdf:Property ;
rdfs:label "Property" ;
sys:has_reference "property" ;
.
sys:Relation
rdf:type rdf:Property ;
rdfs:label "system property" ;
rdfs:subPropertyOf sys:Property ;
sys:has_frame_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/" ;
.
sys:Seed
rdf:type rdf:Property ;
rdfs:label "seed property" ;
rdfs:subPropertyOf sys:Property ;
.
sys:State_Property
rdf:type owl:Class ;
......@@ -67,6 +86,7 @@ sys:Structure
rdf:type owl:Class ;
rdfs:label "System Ontology Structure" ;
sys:has_frame_uri "https://unsel.tetras-libre.fr/tenet/frame/system-ontology/" ;
sys:has_reference "class" ;
.
sys:Verb
rdf:type owl:Class ;
......@@ -87,9 +107,9 @@ sys:action
rdf:type rdf:Property ;
rdfs:label "action" ;
rdfs:subPropertyOf sys:Relation ;
sys:has_mother_property "sys:action" ;
sys:has_reference "relation_action" ;
sys:has_restriction_on_class "action_verb" ;
sys:has_mother_property sys:action ;
sys:has_reference "action" ;
sys:has_restriction_on_class sys:action_verb ;
.
sys:action_verb
rdf:type owl:Class ;
......@@ -118,10 +138,6 @@ sys:attributive_verb
sys:has_restriction "icl>be" ;
sys:is_class "attributive_verb" ;
.
sys:classProperty
rdf:type rdf:Property ;
rdfs:label "System Property" ;
.
sys:component
rdf:type owl:Class ;
rdfs:label "component"@en ;
......@@ -139,22 +155,17 @@ sys:component
sys:entityClassProperty
rdf:type rdf:Property ;
rdfs:label "entity property" ;
rdfs:subPropertyOf sys:classProperty ;
rdfs:subPropertyOf sys:ObjectProperty ;
.
sys:eventClassProperty
rdf:type rdf:Property ;
rdfs:label "event property" ;
rdfs:subPropertyOf sys:classProperty ;
.
sys:eventObjectProperty
rdf:type rdf:Property ;
rdfs:label "event object property" ;
rdfs:subPropertyOf sys:objectProperty ;
rdfs:subPropertyOf sys:ObjectProperty ;
.
sys:from_structure
rdf:type rdf:Property ;
rdfs:label "from structure" ;
rdfs:subPropertyOf sys:classProperty ;
rdfs:subPropertyOf sys:ObjectProperty ;
.
sys:has_actor
rdf:type rdf:Property ;
......@@ -175,22 +186,18 @@ sys:has_frame_base_uri
sys:has_frame_uri
rdf:type rdf:Property ;
rdfs:label "has frame uri" ;
rdfs:subPropertyOf sys:structureProperty ;
rdfs:subPropertyOf sys:Annotation ;
.
sys:has_mother_class
rdf:type rdf:Property ;
rdfs:label "has mother class" ;
rdfs:range owl:Thing ;
rdfs:subPropertyOf sys:Seed ;
sys:has_mother_class "Entity" ;
sys:has_restriction "icl>administrator" ;
sys:has_restriction "icl>operator" ;
sys:has_restriction "icl>person" ;
sys:is_class "agent" ;
.
sys:has_mother_property
rdf:type rdf:Property ;
rdfs:label "has mother property" ;
rdfs:range rdf:Property ;
rdfs:subPropertyOf sys:Seed ;
.
sys:has_object_property
......@@ -213,6 +220,7 @@ sys:has_restriction
sys:has_restriction_on_class
rdf:type rdf:Property ;
rdfs:label "has restriction on class" ;
rdfs:range owl:Thing ;
rdfs:subPropertyOf sys:Seed ;
.
sys:has_restriction_on_unl_relation_source
......@@ -252,10 +260,6 @@ sys:message
sys:has_restriction "icl>communication" ;
sys:is_class "message" ;
.
sys:objectProperty
rdf:type rdf:Property ;
rdfs:label "object property" ;
.
sys:place
rdf:type owl:Class ;
rdfs:label "lieu"@fr ;
......@@ -270,23 +274,14 @@ sys:stateProperty
rdf:type rdf:Property ;
rdfs:label "state property" ;
rdfs:subPropertyOf sys:Relation ;
sys:has_mother_property "sys:stateProperty" ;
sys:has_reference "relation_stateProperty" ;
sys:has_restriction_on_class "attributive_verb" ;
.
sys:statePropertyObjectProperty
rdf:type rdf:Property ;
rdfs:label "state property object property" ;
rdfs:subPropertyOf sys:objectProperty ;
.
sys:structureProperty
rdf:type rdf:Property ;
rdfs:label "structure property" ;
sys:has_mother_property sys:stateProperty ;
sys:has_reference "stateProperty" ;
sys:has_restriction_on_class sys:attributive_verb ;
.
sys:verbClassProperty
rdf:type rdf:Property ;
rdfs:label "verb property" ;
rdfs:subPropertyOf sys:classProperty ;
rdfs:subPropertyOf sys:ObjectProperty ;
.
sys:verbType
rdf:type rdf:Property ;
......
......@@ -152,7 +152,11 @@ def finalize_export_file(export_file):
with open(export_file, "wt") as file:
x = x.replace(
"@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .",
"""@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .
"""
@prefix sys: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/> .
@prefix sys-class: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/class/> .
@prefix sys-property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/property/> .
@prefix sys-relation: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/relation/> .
@prefix sys-Event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/Event#> .
@prefix sys-event: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/eventObjectProperty#> .
@prefix sys-State_Property: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/State_Property#> .
......@@ -163,7 +167,8 @@ def finalize_export_file(export_file):
@prefix sys-attributive_verb: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/attributive_verb#> .
@prefix sys-component: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/component#> .
@prefix sys-message: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/message#> .
@prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .""")
@prefix sys-place: <https://unsel.tetras-libre.fr/tenet/frame/system-ontology/place#> .
""")
file.write(x)
#==============================================================================
......@@ -204,9 +209,9 @@ def run(corpus, source_ref, target_ref):
if __name__ == '__main__':
target_ref = "system"
#target_ref = "environment"
run(req_100, 'R100e', target_ref)
run(req_200, 'R200e', target_ref)
run(req_300, 'R300e', target_ref)
run(req_100, 'R100f', target_ref)
run(req_200, 'R200f', target_ref)
run(req_300, 'R300f', target_ref)
#run(corpus_40, 'Corpus-CCTP-40e', target_ref)
#run(corpus_ERTMS, 'Corpus-ERTMS', target_ref)
#run(corpus_PEV, 'Corpus-PEV', target_ref)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment