From 9509f7e6475864cb4f3dc087d156723f8d34b12d Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Thu, 26 Mar 2026 21:49:58 -0400 Subject: [PATCH 1/9] eng-1577 update core ontology to express key properties of evidence --- apps/website/public/schema/dg_core.ttl | 70 ++++++++++++-------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index 0a12121a7..3509f907e 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -8,6 +8,7 @@ @prefix prov: . @prefix dgb: . @prefix dg: . +@prefix schema: . dg:Question a dgb:NodeSchema; rdfs:label "Question"@en; @@ -23,50 +24,54 @@ dg:Evidence a dgb:NodeSchema; dg:Source a dgb:NodeSchema; rdfs:label "Source"@en; - rdfs:comment "Some research source that reports/generates evidence, like an experiment/study, book, conference paper, or journal article"@en. + rdfs:comment "Some research source that reports/generates evidence, like an experiment/study, book, conference paper, or journal article"@en; + owl:unionOf (prov:Activity schema:CreativeWork). -dg:opposesCE a dgb:RelationDef; - rdfs:label "Opposes"@en; - rdfs:range dg:Claim; - rdfs:domain dg:Evidence. +dg:observationStatement a dgb:RelationDef; + rdfs:label "observation statement"@en; + rdfs:domain dg:Evidence; + rdfs:range dg:Claim. -dg:opposedByEC a dgb:RelationDef; - rdfs:label "Opposed by"@en; - owl:inverseOf dg:opposesCE; - rdfs:range dg:Evidence; - rdfs:domain dg:Claim. +dg:observationOf a dgb:RelationDef; + rdfs:label "observation statement"@en; + rdfs:domain dg:Evidence; + rdfs:range [a owl:Class; owl:unionOf (schema:DigitalDocument schema:Dataset)]. + # That range is very, very provisional. -dg:supportsCE a dgb:RelationDef; - rdfs:label "Supports"@en; - rdfs:range dg:Claim; +dg:curatedTo a dgb:RelationDef; + rdfs:label "Curated to"@en; + rdfs:range dg:Source; rdfs:domain dg:Evidence. -dg:supportedByEC a dgb:RelationDef; - rdfs:label "Supported by"@en; - owl:inverseOf dg:supportsCE; +dg:curatedFrom a dgb:RelationDef; + owl:inverseOf dg:curatedTo; + rdfs:label "Curated from"@en; rdfs:range dg:Evidence; - rdfs:domain dg:Claim. + rdfs:domain dg:Source. -dg:opposesCC a dgb:RelationDef; +dg:ClaimOrEvidence a owl:Class; owl:unionOf (dg:Evidence dg:Claim). + + +dg:opposes a dgb:RelationDef; rdfs:label "Opposes"@en; rdfs:range dg:Claim; - rdfs:domain dg:Claim. + rdfs:domain dg:ClaimOrEvidence. -dg:opposedByCC a dgb:RelationDef; +dg:opposedBy a dgb:RelationDef; rdfs:label "Opposed by"@en; - owl:inverseOf dg:opposesCC; - rdfs:range dg:Claim; + owl:inverseOf dg:opposes; + rdfs:range dg:ClaimOrEvidence; rdfs:domain dg:Claim. -dg:supportsCC a dgb:RelationDef; +dg:supports a dgb:RelationDef; rdfs:label "Supports"@en; rdfs:range dg:Claim; - rdfs:domain dg:Claim. + rdfs:domain dg:ClaimOrEvidence. -dg:supportedByCC a dgb:RelationDef; +dg:supportedBy a dgb:RelationDef; rdfs:label "Supported by"@en; - owl:inverseOf dg:supportsCC; - rdfs:range dg:Claim; + owl:inverseOf dg:supports; + rdfs:range dg:ClaimOrEvidence; rdfs:domain dg:Claim. dg:addresses a dgb:RelationDef; @@ -79,14 +84,3 @@ dg:addressedBy a dgb:RelationDef; owl:inverseOf dg:addresses; rdfs:range dg:Claim; rdfs:domain dg:Question. - -dg:curatedTo a dgb:RelationDef; - rdfs:label "Curated to"@en; - rdfs:range dg:Source; - rdfs:domain dg:Evidence. - -dg:curatedFrom a dgb:RelationDef; - owl:inverseOf dg:curatedTo; - rdfs:label "Curated from"@en; - rdfs:range dg:Evidence; - rdfs:domain dg:Source. From 6c5596706eebd3644ff5c21c8449619871e93f67 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Thu, 26 Mar 2026 22:20:49 -0400 Subject: [PATCH 2/9] typo --- apps/website/public/schema/dg_core.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index 3509f907e..fd12b0d89 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -33,7 +33,7 @@ dg:observationStatement a dgb:RelationDef; rdfs:range dg:Claim. dg:observationOf a dgb:RelationDef; - rdfs:label "observation statement"@en; + rdfs:label "observation of"@en; rdfs:domain dg:Evidence; rdfs:range [a owl:Class; owl:unionOf (schema:DigitalDocument schema:Dataset)]. # That range is very, very provisional. From 53ab0619679c265c318ee774fe247e61dfcc604f Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 10:27:09 -0400 Subject: [PATCH 3/9] Integrate provenance --- apps/website/public/schema/dg_core.ttl | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index fd12b0d89..860c01fec 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -22,21 +22,30 @@ dg:Evidence a dgb:NodeSchema; rdfs:label "Evidence"@en; rdfs:comment "A specific empirical observation from a particular application of a research method"@en. +dg:describesActivity a owl:ObjectProperty; + rdfs:subPropertyOf dc:subject; + rdfs:range prov:Activity. + +dg:SourceDocument a dgb:NodeSchema; + rdfs:comment "Some research source document that reports/generates evidence, like a book, conference paper, or journal article"@en; + owl:subClassOf schema:CreativeWork, [rdf:type owl:Restriction ; owl:onProperty dg:describesActivity ; owl:minCardinality "1"]. + dg:Source a dgb:NodeSchema; rdfs:label "Source"@en; - rdfs:comment "Some research source that reports/generates evidence, like an experiment/study, book, conference paper, or journal article"@en; - owl:unionOf (prov:Activity schema:CreativeWork). + rdfs:comment "Some research source that reports/generates evidence, like an experiment/study, or a book, conference paper, or journal article that describes an experiment/study"@en; + owl:unionOf (prov:Activity dg:SourceDocument). dg:observationStatement a dgb:RelationDef; - rdfs:label "observation statement"@en; + rdfs:label "Observation statement"@en; rdfs:domain dg:Evidence; rdfs:range dg:Claim. dg:observationOf a dgb:RelationDef; - rdfs:label "observation of"@en; + rdfs:label "Observation of"@en; rdfs:domain dg:Evidence; - rdfs:range [a owl:Class; owl:unionOf (schema:DigitalDocument schema:Dataset)]. - # That range is very, very provisional. + rdfs:range prov:Entity. + # That range is very, very provisional. could also involve schema:DigitalDocument , schema:Dataset + # The Entity should be prov:wasGeneratedBy the Activity that is either the Source, or one subject of the Source. dg:curatedTo a dgb:RelationDef; rdfs:label "Curated to"@en; From 4c45ba733478ce43440e4e3bbca37d3f6cc89f00 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 11:02:00 -0400 Subject: [PATCH 4/9] Overhaul of source --- apps/website/public/schema/dg_core.ttl | 45 +++++++++++++++++--------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index 860c01fec..372bbb00a 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -20,10 +20,14 @@ dg:Claim a dgb:NodeSchema; dg:Evidence a dgb:NodeSchema; rdfs:label "Evidence"@en; - rdfs:comment "A specific empirical observation from a particular application of a research method"@en. + rdfs:comment "A specific empirical observation from a particular application of a research method"@en; + owl:subClassOf [rdf:type owl:Restriction ; owl:onProperty dg:observationStatement ; owl:cardinality "1"], + [rdf:type owl:Restriction ; owl:onProperty dg:observationBase ; owl:cardinality "1"]. + # Ideally also dg:observationOriginActivity, but maybe not a hard constraint. -dg:describesActivity a owl:ObjectProperty; +dg:describesActivity a dgb:RelationDef; rdfs:subPropertyOf dc:subject; + rdfs:domain schema:CreativeWork; rdfs:range prov:Activity. dg:SourceDocument a dgb:NodeSchema; @@ -40,27 +44,36 @@ dg:observationStatement a dgb:RelationDef; rdfs:domain dg:Evidence; rdfs:range dg:Claim. -dg:observationOf a dgb:RelationDef; - rdfs:label "Observation of"@en; +dg:observationOriginActivity a dgb:RelationDef; + rdfs:label "Observation origin process"@en; + rdfs:comment "An experiment or study at the origin of the data on which the observation is based"@en; rdfs:domain dg:Evidence; - rdfs:range prov:Entity. + rdfs:range prov:Activity. +# I would like to add: +# owl:propertyChainAxiom (dg:sourceDocument dg:describesActivity). +# But it is not strictly accurate; the document may describe many activities +# HOWEVER it is true that, if sourceDocument is defined, the observationOriginActivity should should follow one of these chains. + +dg:observationBase a dgb:RelationDef; + rdfs:label "Observation base"@en; + rdfs:comment "The data on which the observation is based"@en; + rdfs:range prov:Entity; # That range is very, very provisional. could also involve schema:DigitalDocument , schema:Dataset # The Entity should be prov:wasGeneratedBy the Activity that is either the Source, or one subject of the Source. - -dg:curatedTo a dgb:RelationDef; - rdfs:label "Curated to"@en; - rdfs:range dg:Source; rdfs:domain dg:Evidence. - -dg:curatedFrom a dgb:RelationDef; - owl:inverseOf dg:curatedTo; - rdfs:label "Curated from"@en; - rdfs:range dg:Evidence; - rdfs:domain dg:Source. + # I would like to add: + # owl:propertyChainAxiom (dg:observationOriginActivity prov:generated). + # But it is not strictly accurate; the activity may generate many entities. + # HOWEVER it is true that the observationBase should follow one of these chains, which should exist. + +dg:sourceDocument a owl:objectProperty; + rdfs:label "Source document"@en; + rdfs:comment "A document that described the activity which led to the data on which the observation is based"@en; + rdfs:domain dg:Evidence; + rdfs:range dg:SourceDocument. dg:ClaimOrEvidence a owl:Class; owl:unionOf (dg:Evidence dg:Claim). - dg:opposes a dgb:RelationDef; rdfs:label "Opposes"@en; rdfs:range dg:Claim; From 4219cdfd62d72d87b4a0ae3ed9c4ae2dd18f6b4a Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 11:03:00 -0400 Subject: [PATCH 5/9] SourceDocument->Source --- apps/website/public/schema/dg_core.ttl | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index 372bbb00a..67e608523 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -30,15 +30,10 @@ dg:describesActivity a dgb:RelationDef; rdfs:domain schema:CreativeWork; rdfs:range prov:Activity. -dg:SourceDocument a dgb:NodeSchema; +dg:Source a dgb:NodeSchema; rdfs:comment "Some research source document that reports/generates evidence, like a book, conference paper, or journal article"@en; owl:subClassOf schema:CreativeWork, [rdf:type owl:Restriction ; owl:onProperty dg:describesActivity ; owl:minCardinality "1"]. -dg:Source a dgb:NodeSchema; - rdfs:label "Source"@en; - rdfs:comment "Some research source that reports/generates evidence, like an experiment/study, or a book, conference paper, or journal article that describes an experiment/study"@en; - owl:unionOf (prov:Activity dg:SourceDocument). - dg:observationStatement a dgb:RelationDef; rdfs:label "Observation statement"@en; rdfs:domain dg:Evidence; @@ -70,7 +65,7 @@ dg:sourceDocument a owl:objectProperty; rdfs:label "Source document"@en; rdfs:comment "A document that described the activity which led to the data on which the observation is based"@en; rdfs:domain dg:Evidence; - rdfs:range dg:SourceDocument. + rdfs:range dg:Source. dg:ClaimOrEvidence a owl:Class; owl:unionOf (dg:Evidence dg:Claim). From 393d9ad2197a0952db1593d2ceb1ca7122d14ef8 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 11:05:20 -0400 Subject: [PATCH 6/9] reorder --- apps/website/public/schema/dg_core.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index 67e608523..c3a4aca0e 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -54,8 +54,8 @@ dg:observationBase a dgb:RelationDef; rdfs:comment "The data on which the observation is based"@en; rdfs:range prov:Entity; # That range is very, very provisional. could also involve schema:DigitalDocument , schema:Dataset - # The Entity should be prov:wasGeneratedBy the Activity that is either the Source, or one subject of the Source. rdfs:domain dg:Evidence. + # The Entity should be prov:wasGeneratedBy the Activity that is either the Source, or one subject of the Source. # I would like to add: # owl:propertyChainAxiom (dg:observationOriginActivity prov:generated). # But it is not strictly accurate; the activity may generate many entities. From 035f5ed9612121e4b2a7c1ea179ec51a9ceb5b4f Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 11:24:30 -0400 Subject: [PATCH 7/9] rename Source to SourceDocument --- apps/website/public/schema/dg_core.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index c3a4aca0e..0732e0f15 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -30,7 +30,7 @@ dg:describesActivity a dgb:RelationDef; rdfs:domain schema:CreativeWork; rdfs:range prov:Activity. -dg:Source a dgb:NodeSchema; +dg:SourceDocument a dgb:NodeSchema; rdfs:comment "Some research source document that reports/generates evidence, like a book, conference paper, or journal article"@en; owl:subClassOf schema:CreativeWork, [rdf:type owl:Restriction ; owl:onProperty dg:describesActivity ; owl:minCardinality "1"]. @@ -65,7 +65,7 @@ dg:sourceDocument a owl:objectProperty; rdfs:label "Source document"@en; rdfs:comment "A document that described the activity which led to the data on which the observation is based"@en; rdfs:domain dg:Evidence; - rdfs:range dg:Source. + rdfs:range dg:SourceDocument. dg:ClaimOrEvidence a owl:Class; owl:unionOf (dg:Evidence dg:Claim). From 1e25b00ac8cf188be7f873d64a308f2c081940da Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 11:32:52 -0400 Subject: [PATCH 8/9] Graphite issues --- apps/website/public/schema/dg_core.ttl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index 0732e0f15..aff5dfcfe 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -21,8 +21,8 @@ dg:Claim a dgb:NodeSchema; dg:Evidence a dgb:NodeSchema; rdfs:label "Evidence"@en; rdfs:comment "A specific empirical observation from a particular application of a research method"@en; - owl:subClassOf [rdf:type owl:Restriction ; owl:onProperty dg:observationStatement ; owl:cardinality "1"], - [rdf:type owl:Restriction ; owl:onProperty dg:observationBase ; owl:cardinality "1"]. + owl:subClassOf [rdf:type owl:Restriction ; owl:onProperty dg:observationStatement ; owl:cardinality 1], + [rdf:type owl:Restriction ; owl:onProperty dg:observationBase ; owl:cardinality 1]. # Ideally also dg:observationOriginActivity, but maybe not a hard constraint. dg:describesActivity a dgb:RelationDef; @@ -31,8 +31,9 @@ dg:describesActivity a dgb:RelationDef; rdfs:range prov:Activity. dg:SourceDocument a dgb:NodeSchema; + rdfs:label "Source document"@en; rdfs:comment "Some research source document that reports/generates evidence, like a book, conference paper, or journal article"@en; - owl:subClassOf schema:CreativeWork, [rdf:type owl:Restriction ; owl:onProperty dg:describesActivity ; owl:minCardinality "1"]. + owl:subClassOf schema:CreativeWork, [rdf:type owl:Restriction ; owl:onProperty dg:describesActivity ; owl:minCardinality 1]. dg:observationStatement a dgb:RelationDef; rdfs:label "Observation statement"@en; @@ -61,7 +62,7 @@ dg:observationBase a dgb:RelationDef; # But it is not strictly accurate; the activity may generate many entities. # HOWEVER it is true that the observationBase should follow one of these chains, which should exist. -dg:sourceDocument a owl:objectProperty; +dg:sourceDocument a dgb:RelationDef; rdfs:label "Source document"@en; rdfs:comment "A document that described the activity which led to the data on which the observation is based"@en; rdfs:domain dg:Evidence; From d89872f66dbd70ee569232fd683763bcd1d680c1 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Parent Date: Fri, 27 Mar 2026 11:39:44 -0400 Subject: [PATCH 9/9] missing label (devin) --- apps/website/public/schema/dg_core.ttl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/website/public/schema/dg_core.ttl b/apps/website/public/schema/dg_core.ttl index aff5dfcfe..6c0302974 100644 --- a/apps/website/public/schema/dg_core.ttl +++ b/apps/website/public/schema/dg_core.ttl @@ -26,6 +26,7 @@ dg:Evidence a dgb:NodeSchema; # Ideally also dg:observationOriginActivity, but maybe not a hard constraint. dg:describesActivity a dgb:RelationDef; + rdfs:label "Describes activity"@en; rdfs:subPropertyOf dc:subject; rdfs:domain schema:CreativeWork; rdfs:range prov:Activity.