From d70229a7b49236f47fc972da457b23dcfc6999ee Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 10 Aug 2023 17:33:35 -0400 Subject: [PATCH] Incorporate ORG ontology Review of CASE-Corpora with RDFS entailments disabled showed some needs to designate nodes as both `org:Organization` and `uco-identity:Organization`. The particular nodes where this occurs are those used with DCAT-US and non-DCAT-US properties. This patch adds a new class `case-corpora:Organization` to join UCO's Organization with ORG's Organization, and uses this more specific class on individuals flagged by SHACL validation. SHACL shapes for ORG are started by reviewing class-disjointedness centered on `org:Organization`. One unexpected effect is this triple in ORG: ```turtle org:Organization owl:equivalentClass foaf:Organization ; . ``` A new SHACL shape practice is being trialed to handle this. A follow-on patch will regenerate Make-managed files. References: * https://resources.data.gov/resources/dcat-us/#publisher Signed-off-by: Alex Nelson --- catalog/catalog.ttl | 2 +- catalog/shared.ttl | 5 ++- dependencies/Makefile | 14 ++++++++ etc/dependency_files.tsv | 1 + ontology/case-corpora.ttl | 12 +++++++ shapes/sh-dcat-us.ttl | 2 ++ shapes/sh-org.ttl | 67 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 shapes/sh-org.ttl diff --git a/catalog/catalog.ttl b/catalog/catalog.ttl index c76f14a..144f797 100644 --- a/catalog/catalog.ttl +++ b/catalog/catalog.ttl @@ -46,7 +46,7 @@ kb:distribution-adc5fd35-e9fa-4d1b-8598-f5ce3bba3e9c . kb:organization-4ac712c2-4c6e-4670-b1d5-bcfe9d82ae3e - a org:Organization ; + a case-corpora:Organization ; skos:prefLabel "The CASE Community" ; . diff --git a/catalog/shared.ttl b/catalog/shared.ttl index 1a1877e..956275d 100644 --- a/catalog/shared.ttl +++ b/catalog/shared.ttl @@ -1,7 +1,6 @@ @prefix case-corpora: . @prefix kb: . @prefix orcid: . -@prefix org: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @@ -12,12 +11,12 @@ @prefix xsd: . kb:organization-6ee3224c-c27c-4a8c-8a64-27bcff396e53 - a org:Organization ; + a case-corpora:Organization ; skos:prefLabel "DFRWS" ; . kb:organization-72ec45c9-ea94-4503-9428-ad73300056f5 - a org:Organization ; + a case-corpora:Organization ; skos:prefLabel "Digital Corpora" ; . diff --git a/dependencies/Makefile b/dependencies/Makefile index 76f927a..410cb3a 100644 --- a/dependencies/Makefile +++ b/dependencies/Makefile @@ -39,6 +39,7 @@ dependent_ontology_files := \ discourse-relationships.ttl \ dublin_core_type.ttl \ foaf.ttl \ + org.ttl \ prov-o.ttl \ situation.ttl \ skos.ttl \ @@ -252,6 +253,19 @@ foaf.ttl: rm __$@ mv _$@ $@ +org.ttl: + wget \ + --output-document=__$@ \ + http://www.w3.org/ns/org + java -jar $(rdf_toolkit_jar) \ + --inline-blank-nodes \ + --source-format turtle \ + --source __$@ \ + --target-format turtle \ + --target _$@ + rm __$@ + mv _$@ $@ + prov-o.ttl: wget \ --output-document=__$@ \ diff --git a/etc/dependency_files.tsv b/etc/dependency_files.tsv index 6a05d7a..37385c3 100644 --- a/etc/dependency_files.tsv +++ b/etc/dependency_files.tsv @@ -9,6 +9,7 @@ http://www.w3.org/2004/02/skos/core ${top_srcdir}/dependencies/skos.ttl http://www.w3.org/2006/time#2016 ${top_srcdir}/dependencies/time.ttl http://www.w3.org/2006/vcard/ns ${top_srcdir}/dependencies/vcard.ttl http://www.w3.org/ns/dcat ${top_srcdir}/dependencies/dcat.ttl +http://www.w3.org/ns/org# ${top_srcdir}/dependencies/org.ttl http://xmlns.com/foaf/0.1/ ${top_srcdir}/dependencies/foaf.ttl https://raw.githubusercontent.com/casework/CASE-Corpora/main/dependencies/prov-o.ttl ${top_srcdir}/dependencies/prov-o.ttl https://raw.githubusercontent.com/casework/CASE-Corpora/main/dependencies/sosa.ttl ${top_srcdir}/dependencies/sosa.ttl diff --git a/ontology/case-corpora.ttl b/ontology/case-corpora.ttl index 0f0fffd..6c9cd83 100644 --- a/ontology/case-corpora.ttl +++ b/ontology/case-corpora.ttl @@ -2,6 +2,7 @@ # imports: http://www.w3.org/2006/time#2016 # imports: http://www.w3.org/2006/vcard/ns # imports: http://www.w3.org/ns/dcat +# imports: http://www.w3.org/ns/org# # imports: http://xmlns.com/foaf/0.1/ # imports: https://ontology.caseontology.org/case/case/1.2.0 # imports: https://raw.githubusercontent.com/casework/CASE-Corpora/main/dependencies/prov-o.ttl @@ -14,6 +15,7 @@ @prefix dcterms: . @prefix drafting: . @prefix foaf: . +@prefix org: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @@ -38,6 +40,7 @@ time:2016 , , , + , , , , @@ -80,6 +83,15 @@ case-corpora:IANAMediaType ; . +case-corpora:Organization + a owl:Class ; + rdfs:subClassOf + org:Organization , + foaf:Organization , + uco-identity:Organization + ; + . + case-corpora:SeedingAction a owl:Class ; rdfs:subClassOf diff --git a/shapes/sh-dcat-us.ttl b/shapes/sh-dcat-us.ttl index 180fc66..cf0a1fe 100644 --- a/shapes/sh-dcat-us.ttl +++ b/shapes/sh-dcat-us.ttl @@ -1,4 +1,5 @@ # imports: http://example.org/shapes/dcat +# imports: http://example.org/shapes/org # imports: http://example.org/shapes/pod # imports: http://example.org/shapes/skos @@ -20,6 +21,7 @@ a owl:Ontology ; owl:imports , + , , ; diff --git a/shapes/sh-org.ttl b/shapes/sh-org.ttl new file mode 100644 index 0000000..89208ac --- /dev/null +++ b/shapes/sh-org.ttl @@ -0,0 +1,67 @@ +# imports: http://example.org/shapes/foaf +# imports: http://www.w3.org/ns/org# + +@prefix foaf: . +@prefix org: . +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix sh-org: . +@prefix xsd: . + + + a owl:Ontology ; + owl:imports + , + + ; + . + +sh-org:ChangeEvent-disjointWith-Organization-shape + a sh:NodeShape ; + sh:message "org:ChangeEvent and org:Organization are disjoint classes."@en ; + sh:not [ + a sh:NodeShape ; + sh:class org:Organization ; + ] ; + sh:targetClass org:ChangeEvent ; + . + +sh-org:Membership-disjointWith-Organization-shape + a sh:NodeShape ; + sh:message "org:Membership and org:Organization are disjoint classes."@en ; + sh:not [ + a sh:NodeShape ; + sh:class org:Organization ; + ] ; + sh:targetClass org:Membership ; + . + +sh-org:Organization-disjointWith-Role-shape + a sh:NodeShape ; + sh:message "org:Organization and org:Role are disjoint classes."@en ; + sh:not [ + a sh:NodeShape ; + sh:class org:Role ; + ] ; + sh:targetClass org:Organization ; + . + +sh-org:Organization-disjointWith-Site-shape + a sh:NodeShape ; + sh:message "org:Organization and org:Site are disjoint classes."@en ; + sh:not [ + a sh:NodeShape ; + sh:class org:Site ; + ] ; + sh:targetClass org:Organization ; + . + +sh-org:Organization-shape + a sh:NodeShape ; + rdfs:comment "org:Organization declares itself an equivalent class with foaf:Organization."@en ; + sh:class foaf:Organization ; + sh:targetClass org:Organization ; + . +