CAC Partnerships SHACL Shapes with gUFO Integration
type: Ontology
comment: SHACL shapes for validating public-private partnerships with comprehensive gUFO foundational ontology integration for enhanced semantic precision and validation capabilities.
version info: 2.11.0
creator: CAC Ontology Team
modified: 2025-11-18
imports: https://cacontology.projectvic.org/partnerships/2.11.0
imports: gufo#

Partnership Organization Type Validation Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Validates gUFO Organization type consistency for partnerships.
property:
  path: type
  has value: Organization
  min count: 1
  message: Partnership must be typed as gUFO Organization.
property:
  path: subClassOf
  has value: Organization
  min count: 0
  message: Partnership class should extend gUFO Organization.

Cooperation Event Type Validation Shape
type: NodeShape
target class: TechnologyCooperation
comment: Validates gUFO Event type consistency for cooperation events.
property:
  path: type
  has value: Event
  min count: 1
  message: Technology cooperation must be typed as gUFO Event.
sparql:
  message: Cooperation events must be properly typed as gUFO Event and extend UCO Action.
  select: SELECT $this WHERE { $this rdf:type gufo:Event . FILTER NOT EXISTS { $this rdf:type ?eventClass . ?eventClass rdfs:subClassOf* uco-action:Action . } }

Partnership Phase Type Validation Shape
type: NodeShape
target class: Phase
comment: Validates gUFO Phase type consistency for partnership phases.
sparql:
  message: Partnership phases must be properly typed as gUFO Phase and extend partnership classes.
  select: SELECT $this WHERE { $this rdf:type gufo:Phase . FILTER NOT EXISTS { $this rdf:type ?phaseClass . ?phaseClass rdfs:subClassOf* cacontology-partnerships:PublicPrivatePartnership . } }

Partner Role Type Validation Shape
type: NodeShape
target class: Role
comment: Validates gUFO Role type consistency for partner roles.
sparql:
  message: Partner roles must be properly typed as gUFO Role and extend UCO Role.
  select: SELECT $this WHERE { $this rdf:type gufo:Role . FILTER NOT EXISTS { $this rdfs:subClassOf* uco-role:Role . } }

Partnership Object Type Validation Shape
type: NodeShape
target class: InformationSharingFramework
comment: Validates gUFO Object type consistency for partnership objects.
property:
  path: subClassOf
  has value: Object
  min count: 0
  message: Information sharing framework should extend gUFO Object.

Partnership Situation Type Validation Shape
type: NodeShape
target class: Situation
comment: Validates gUFO Situation type consistency for partnership situations.
property:
  path: subClassOf
  has value: Situation
  min count: 0
  message: Partnership situation should extend gUFO Situation.

Partnership Temporal Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Validates gUFO temporal constraints for partnerships.
property:
  path: hasPartnershipBeginPoint
  datatype: dateTimeStamp
  max count: 1
  message: Partnership may have begin point timestamp.
property:
  path: hasPartnershipEndPoint
  datatype: dateTimeStamp
  max count: 1
  message: Partnership may have end point timestamp.
sparql:
  message: Partnership end must be after begin when both are specified (gUFO temporal constraint).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPartnershipBeginPoint ?start ; cacontology-partnerships:hasPartnershipEndPoint ?end . FILTER (?end <= ?start) }

Cooperation Event Temporal Shape
type: NodeShape
target class: TechnologyCooperation
comment: Validates gUFO temporal constraints for cooperation events.
sparql:
  message: gUFO Events must have consistent temporal boundaries with end after start.
  select: SELECT $this WHERE { $this gufo:hasBeginPointInXSDDateTimeStamp ?start ; gufo:hasEndPointInXSDDateTimeStamp ?end . FILTER (?end <= ?start) }

Partnership Phase Temporal Shape
type: NodeShape
target class: Phase
comment: Validates gUFO temporal constraints for partnership phases.
property:
  path: hasPhaseBeginPoint
  datatype: dateTimeStamp
  max count: 1
  message: Partnership phase may have begin point timestamp.
property:
  path: hasPhaseEndPoint
  datatype: dateTimeStamp
  max count: 1
  message: Partnership phase may have end point timestamp.
sparql:
  message: Phase end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPhaseBeginPoint ?start ; cacontology-partnerships:hasPhaseEndPoint ?end . FILTER (?end <= ?start) }

Partner Role Temporal Shape
type: NodeShape
target class: Role
comment: Validates gUFO temporal constraints for partner roles.
property:
  path: hasRoleBeginPoint
  datatype: dateTimeStamp
  max count: 1
  message: Partner role may have begin point timestamp.
property:
  path: hasRoleEndPoint
  datatype: dateTimeStamp
  max count: 1
  message: Partner role may have end point timestamp.
sparql:
  message: Role end must be after begin when both are specified.
  select: SELECT $this WHERE { $this cacontology-partnerships:hasRoleBeginPoint ?start ; cacontology-partnerships:hasRoleEndPoint ?end . FILTER (?end <= ?start) }

Public Private Partnership Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Enhanced validation shape for public-private partnership instances with gUFO quality aspects.
property:
  path: partnerCount
  datatype: nonNegativeInteger
  min count: 1
  max count: 1
  min inclusive: 2
  max inclusive: 100
  message: Partnership must have between 2 and 100 partners.
property:
  path: partnershipScope
  datatype: string
  min count: 1
  max count: 1
  in: local
  in: national
  in: regional
  in: global
  message: Partnership scope must be from the allowed list.
property:
  path: partnershipDuration
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 1.0
  max inclusive: 120.0
  message: Partnership duration must be between 1 and 120 months.
property:
  path: formalAgreement
  datatype: boolean
  min count: 1
  max count: 1
  message: Partnership must specify if formal agreement exists.
property:
  path: hasPartnershipEffectiveness
  datatype: string
  max count: 1
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  message: Partnership effectiveness must be from allowed values (gUFO quality aspect).
property:
  path: hasCoordinationLevel
  datatype: string
  max count: 1
  in: minimal
  in: basic
  in: standard
  in: enhanced
  in: comprehensive
  message: Coordination level must be from allowed values (gUFO quality aspect).
property:
  path: hasTrustLevel
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Trust level must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: hasCollaborationIntensity
  datatype: string
  max count: 1
  in: low
  in: moderate
  in: high
  in: intensive
  in: fully_integrated
  message: Collaboration intensity must be from allowed values (gUFO quality aspect).
property:
  path: hasSuccessRate
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Success rate must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: partnerCount
  datatype: nonNegativeInteger
  min count: 1
  max count: 1
  min inclusive: 2
  max inclusive: 100
  message: Partnership must have between 2 and 100 partners.
property:
  path: partnershipScope
  datatype: string
  min count: 1
  max count: 1
  in: local
  in: national
  in: regional
  in: global
  message: Partnership scope must be from the allowed list.
property:
  path: partnershipDuration
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 1.0
  max inclusive: 120.0
  message: Partnership duration must be between 1 and 120 months.
property:
  path: formalAgreement
  datatype: boolean
  min count: 1
  max count: 1
  message: Partnership must specify if formal agreement exists.
property:
  path: hasPartnershipEffectiveness
  datatype: string
  max count: 1
  in: ineffective
  in: limited
  in: moderate
  in: effective
  in: highly_effective
  message: Partnership effectiveness must be from allowed values (gUFO quality aspect).
property:
  path: hasCoordinationLevel
  datatype: string
  max count: 1
  in: minimal
  in: basic
  in: standard
  in: enhanced
  in: comprehensive
  message: Coordination level must be from allowed values (gUFO quality aspect).
property:
  path: hasTrustLevel
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Trust level must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: hasCollaborationIntensity
  datatype: string
  max count: 1
  in: low
  in: moderate
  in: high
  in: intensive
  in: fully_integrated
  message: Collaboration intensity must be from allowed values (gUFO quality aspect).
property:
  path: hasSuccessRate
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Success rate must be between 0.0 and 1.0 (gUFO quality aspect).

Multi Stakeholder Initiative Shape
type: NodeShape
target class: MultiStakeholderInitiative
comment: Validation shape for multi-stakeholder initiative instances.
property:
  path: partnerCount
  datatype: nonNegativeInteger
  min count: 1
  max count: 1
  min inclusive: 3
  max inclusive: 50
  message: Multi-stakeholder initiative must have between 3 and 50 partners.

Tech Industry Cooperation Shape
type: NodeShape
target class: TechIndustryCooperation
comment: Validation shape for tech industry cooperation instances.
property:
  path: formalAgreement
  datatype: boolean
  min count: 1
  max count: 1
  message: Tech industry cooperation must specify if formal agreement exists.

National Initiative Program Shape
type: NodeShape
target class: NationalInitiativeProgram
comment: Validation shape for national initiative program instances.
property:
  path: initiativeName
  datatype: string
  min count: 1
  max count: 1
  min length: 3
  max length: 100
  message: Initiative name must be between 3 and 100 characters.
property:
  path: launchedDate
  datatype: dateTime
  min count: 1
  max count: 1
  message: National initiative must have a launch date.
property:
  path: programScope
  datatype: string
  min count: 1
  max count: 1
  in: federal
  in: state_coordination
  in: local_support
  in: multi_jurisdictional
  message: Program scope must be from the allowed list.
property:
  path: leadAgency
  datatype: string
  min count: 1
  max count: 1
  in: DOJ
  in: DHS
  in: FBI
  in: ICE
  in: USAO
  in: ATF
  message: Lead agency must be from the allowed list.
property:
  path: casesProcessed
  datatype: nonNegativeInteger
  min count: 0
  max count: 1
  min inclusive: 0
  max inclusive: 10000
  message: Cases processed must be between 0 and 10,000.

Project Safe Childhood Case Shape
type: NodeShape
target class: ProjectSafeChildhoodCase
comment: Validation shape for Project Safe Childhood case instances.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 5
  max length: 200
  message: Case label should be between 5 and 200 characters when provided.

Crowdsourcing Investigation Shape
type: NodeShape
target class: CrowdsourcingInvestigation
comment: Enhanced validation shape for crowdsourcing investigation instances with gUFO quality aspects.
property:
  path: publicTipsReceived
  datatype: nonNegativeInteger
  min count: 0
  max count: 1
  min inclusive: 0
  max inclusive: 100000
  message: Public tips received must be between 0 and 100,000.
property:
  path: crowdsourcingPlatform
  datatype: string
  min count: 1
  max count: 1
  in: website
  in: social_media
  in: forums
  in: mobile_app
  in: specialized_platform
  message: Crowdsourcing platform must be from the allowed list.
property:
  path: hasParticipationLevel
  datatype: string
  max count: 1
  in: minimal
  in: low
  in: moderate
  in: high
  in: massive
  message: Participation level must be from allowed values (gUFO quality aspect).
property:
  path: hasResponseQuality
  datatype: string
  max count: 1
  in: poor
  in: fair
  in: good
  in: excellent
  in: exceptional
  message: Response quality must be from allowed values (gUFO quality aspect).
property:
  path: hasEngagementEffectiveness
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Engagement effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: publicTipsReceived
  datatype: nonNegativeInteger
  min count: 0
  max count: 1
  min inclusive: 0
  max inclusive: 100000
  message: Public tips received must be between 0 and 100,000.
property:
  path: crowdsourcingPlatform
  datatype: string
  min count: 1
  max count: 1
  in: website
  in: social_media
  in: forums
  in: mobile_app
  in: specialized_platform
  message: Crowdsourcing platform must be from the allowed list.
property:
  path: hasParticipationLevel
  datatype: string
  max count: 1
  in: minimal
  in: low
  in: moderate
  in: high
  in: massive
  message: Participation level must be from allowed values (gUFO quality aspect).
property:
  path: hasResponseQuality
  datatype: string
  max count: 1
  in: poor
  in: fair
  in: good
  in: excellent
  in: exceptional
  message: Response quality must be from allowed values (gUFO quality aspect).
property:
  path: hasEngagementEffectiveness
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Engagement effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).

Object Identification Request Shape
type: NodeShape
target class: ObjectIdentificationRequest
comment: Validation shape for object identification request instances.
property:
  path: objectsToIdentify
  datatype: nonNegativeInteger
  min count: 1
  max count: 1
  min inclusive: 1
  max inclusive: 1000
  message: Objects to identify must be between 1 and 1,000.
property:
  path: identificationSuccessRate
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Identification success rate must be between 0.0 and 1.0.

Geolocation Request Shape
type: NodeShape
target class: GeolocationRequest
comment: Validation shape for geolocation request instances.
property:
  path: objectsToIdentify
  datatype: nonNegativeInteger
  min count: 1
  max count: 1
  min inclusive: 1
  max inclusive: 500
  message: Locations to identify must be between 1 and 500.

Community Analysis Shape
type: NodeShape
target class: CommunityAnalysis
comment: Validation shape for community analysis instances.
property:
  path: volunteerHours
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 1.0
  max inclusive: 10000.0
  message: Volunteer hours must be between 1.0 and 10,000.0.

Information Sharing Framework Shape
type: NodeShape
target class: InformationSharingFramework
comment: Enhanced validation shape for information sharing framework instances with gUFO quality aspects.
property:
  path: sharingFrequency
  datatype: string
  min count: 1
  max count: 1
  in: real_time
  in: daily
  in: weekly
  in: monthly
  in: on_demand
  message: Sharing frequency must be from the allowed list.
property:
  path: hasSharingEfficiency
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Sharing efficiency must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: hasSecurityLevel
  datatype: string
  max count: 1
  in: basic
  in: standard
  in: enhanced
  in: high
  in: maximum
  message: Security level must be from allowed values (gUFO quality aspect).
property:
  path: hasDataQuality
  datatype: string
  max count: 1
  in: poor
  in: fair
  in: good
  in: excellent
  in: verified
  message: Data quality must be from allowed values (gUFO quality aspect).
property:
  path: sharingFrequency
  datatype: string
  min count: 1
  max count: 1
  in: real_time
  in: daily
  in: weekly
  in: monthly
  in: on_demand
  message: Sharing frequency must be from the allowed list.
property:
  path: hasSharingEfficiency
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Sharing efficiency must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: hasSecurityLevel
  datatype: string
  max count: 1
  in: basic
  in: standard
  in: enhanced
  in: high
  in: maximum
  message: Security level must be from allowed values (gUFO quality aspect).
property:
  path: hasDataQuality
  datatype: string
  max count: 1
  in: poor
  in: fair
  in: good
  in: excellent
  in: verified
  message: Data quality must be from allowed values (gUFO quality aspect).

Data Sharing Agreement Shape
type: NodeShape
target class: DataSharingAgreement
comment: Validation shape for data sharing agreement instances.
property:
  path: dataSharingLevel
  datatype: string
  min count: 1
  max count: 1
  in: metadata_only
  in: hash_values
  in: intelligence_products
  in: full_data
  message: Data sharing level must be from the allowed list.

Technical Integration Shape
type: NodeShape
target class: TechnicalIntegration
comment: Validation shape for technical integration instances.
property:
  path: automationLevel
  datatype: string
  min count: 1
  max count: 1
  in: manual
  in: semi_automated
  in: fully_automated
  message: Automation level must be from the allowed list.

Hash Sharing Protocol Shape
type: NodeShape
target class: HashSharingProtocol
comment: Validation shape for hash sharing protocol instances.
property:
  path: hashDatabaseSize
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 0.1
  max inclusive: 1000.0
  message: Hash database size must be between 0.1 and 1,000.0 million entries.

Technology Cooperation Shape
type: NodeShape
target class: TechnologyCooperation
comment: Enhanced validation shape for technology cooperation instances with gUFO quality aspects.
property:
  path: technologyMaturity
  datatype: string
  min count: 1
  max count: 1
  in: experimental
  in: pilot
  in: production
  in: mature
  message: Technology maturity must be from the allowed list.
property:
  path: hasInnovationLevel
  datatype: string
  max count: 1
  in: incremental
  in: moderate
  in: significant
  in: breakthrough
  in: revolutionary
  message: Innovation level must be from allowed values (gUFO quality aspect).
property:
  path: hasImplementationSpeed
  datatype: string
  max count: 1
  in: slow
  in: moderate
  in: fast
  in: rapid
  in: immediate
  message: Implementation speed must be from allowed values (gUFO quality aspect).
property:
  path: hasTechnicalReliability
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Technical reliability must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: technologyMaturity
  datatype: string
  min count: 1
  max count: 1
  in: experimental
  in: pilot
  in: production
  in: mature
  message: Technology maturity must be from the allowed list.
property:
  path: hasInnovationLevel
  datatype: string
  max count: 1
  in: incremental
  in: moderate
  in: significant
  in: breakthrough
  in: revolutionary
  message: Innovation level must be from allowed values (gUFO quality aspect).
property:
  path: hasImplementationSpeed
  datatype: string
  max count: 1
  in: slow
  in: moderate
  in: fast
  in: rapid
  in: immediate
  message: Implementation speed must be from allowed values (gUFO quality aspect).
property:
  path: hasTechnicalReliability
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Technical reliability must be between 0.0 and 1.0 (gUFO quality aspect).

Content Detection Cooperation Shape
type: NodeShape
target class: ContentDetectionCooperation
comment: Validation shape for content detection cooperation instances.
property:
  path: detectionAccuracy
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 0.5
  max inclusive: 1.0
  message: Detection accuracy must be between 0.5 and 1.0.

Platform Monitoring Shape
type: NodeShape
target class: PlatformMonitoring
comment: Validation shape for platform monitoring instances.
property:
  path: platformsCovered
  datatype: nonNegativeInteger
  min count: 1
  max count: 1
  min inclusive: 1
  max inclusive: 1000
  message: Platforms covered must be between 1 and 1,000.

Tool Development Shape
type: NodeShape
target class: ToolDevelopment
comment: Validation shape for tool development instances.
property:
  path: developmentInvestment
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 10000.0
  max inclusive: 100000000.0
  message: Development investment must be between $10,000 and $100,000,000.

Coordination Mechanism Shape
type: NodeShape
target class: CoordinationMechanism
comment: Validation shape for coordination mechanism instances.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 5
  max length: 200
  message: Coordination mechanism label should be between 5 and 200 characters when provided.

Regular Meeting Shape
type: NodeShape
target class: RegularMeeting
comment: Validation shape for regular meeting instances.
property:
  path: meetingFrequency
  datatype: string
  min count: 1
  max count: 1
  in: weekly
  in: monthly
  in: quarterly
  in: annual
  in: ad_hoc
  message: Meeting frequency must be from the allowed list.

Emergency Coordination Shape
type: NodeShape
target class: EmergencyCoordination
comment: Validation shape for emergency coordination instances.
property:
  path: responseTime
  datatype: decimal
  min count: 1
  max count: 1
  min inclusive: 0.25
  max inclusive: 72.0
  message: Emergency response time must be between 0.25 and 72.0 hours.

Joint Operation Shape
type: NodeShape
target class: JointOperation
comment: Validation shape for joint operation instances.
property:
  path: operationSuccess
  datatype: decimal
  min count: 0
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Operation success rate must be between 0.0 and 1.0.

Partner Role Shape
type: NodeShape
target class: PartnerRole
comment: Enhanced validation shape for partner role instances with gUFO quality aspects.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 3
  max length: 100
  message: Partner role label should be between 3 and 100 characters when provided.
property:
  path: hasRoleEffectiveness
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Role effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: hasCapabilityLevel
  datatype: string
  max count: 1
  in: limited
  in: basic
  in: standard
  in: advanced
  in: expert
  message: Capability level must be from allowed values (gUFO quality aspect).
property:
  path: hasCommitmentLevel
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Commitment level must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 3
  max length: 100
  message: Partner role label should be between 3 and 100 characters when provided.
property:
  path: hasRoleEffectiveness
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Role effectiveness must be between 0.0 and 1.0 (gUFO quality aspect).
property:
  path: hasCapabilityLevel
  datatype: string
  max count: 1
  in: limited
  in: basic
  in: standard
  in: advanced
  in: expert
  message: Capability level must be from allowed values (gUFO quality aspect).
property:
  path: hasCommitmentLevel
  datatype: double
  max count: 1
  min inclusive: 0.0
  max inclusive: 1.0
  message: Commitment level must be between 0.0 and 1.0 (gUFO quality aspect).

Law Enforcement Partner Shape
type: NodeShape
target class: LawEnforcementPartner
comment: Validation shape for law enforcement partner instances.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 3
  max length: 100
  message: Law enforcement partner label should be between 3 and 100 characters when provided.

Technology Partner Shape
type: NodeShape
target class: TechnologyPartner
comment: Validation shape for technology partner instances.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 3
  max length: 100
  message: Technology partner label should be between 3 and 100 characters when provided.

NGO Partner Shape
type: NodeShape
target class: NGOPartner
comment: Validation shape for NGO partner instances.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 3
  max length: 100
  message: NGO partner label should be between 3 and 100 characters when provided.

IncludesPartnerShape
type: PropertyShape
path: includesPartner
name: includes partner
description: Links partnership to participating organizations
class: Organization
min count: 2

HasRoleShape
type: PropertyShape
path: hasRole
name: has role
description: Links partner organization to their role in the partnership
class: PartnerRole
min count: 1

CoordinatedByShape
type: PropertyShape
path: coordinatedBy
name: coordinated by
description: Links partnership activities to coordinating organization
class: Organization
min count: 1

GovernedByShape
type: PropertyShape
path: governedBy
name: governed by
description: Links partnership to information sharing frameworks governing it
class: InformationSharingFramework
min count: 0

SolicitsHelpShape
type: PropertyShape
path: solicitsHelp
name: solicits help
description: Links organization to crowdsourcing investigations they conduct
class: CrowdsourcingInvestigation
min count: 0

ParticipatesInDevelopmentShape
type: PropertyShape
path: participatesInDevelopment
name: participates in development
description: Links technology partners to development projects they participate in
class: ToolDevelopment
min count: 0

CoordinatedThroughShape
type: PropertyShape
path: coordinatedThrough
name: coordinated through
description: Links partnership activities to coordination mechanisms used
class: CoordinationMechanism
min count: 1

Partnership Consistency Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Validates consistency between partnership characteristics and participating organizations.
sparql:
  message: Partnership must include at least the minimum number of partners specified in partnerCount.
  prefixes:
    declare:
      prefix: cacontology-partnerships
      namespace: https://cacontology.projectvic.org/partnerships#
  select: SELECT $this WHERE { $this cacontology-partnerships:partnerCount ?count . { SELECT $this (COUNT(?partner) AS ?actualCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . } GROUP BY $this } FILTER (?actualCount < ?count) }

Tech Cooperation Validity Shape
type: NodeShape
target class: TechIndustryCooperation
comment: Validates that tech industry cooperation includes at least one technology partner.
sparql:
  message: Tech industry cooperation must include at least one technology partner.
  prefixes:
    declare:
      prefix: cacontology-partnerships
      namespace: https://cacontology.projectvic.org/partnerships#
  select: SELECT $this WHERE { $this a cacontology-partnerships:TechIndustryCooperation . FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?org . ?org cacontology-partnerships:hasRole cacontology-partnerships:TechnologyPartner . } }

Crowdsourcing Effectiveness Shape
type: NodeShape
target class: ObjectIdentificationRequest
comment: Validates crowdsourcing effectiveness metrics.
sparql:
  message: Object identification requests with high success rates should have received public tips.
  prefixes:
    declare:
      prefix: cacontology-partnerships
      namespace: https://cacontology.projectvic.org/partnerships#
  select: SELECT $this WHERE { $this cacontology-partnerships:identificationSuccessRate ?rate . FILTER (?rate > 0.5) FILTER NOT EXISTS { ?investigation cacontology-partnerships:generatesRequests $this ; cacontology-partnerships:publicTipsReceived ?tips . FILTER (?tips > 0) } }

Data Quality Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Validates data quality for partnership instances.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 5
  max length: 200
  message: Partnership label should be between 5 and 200 characters when provided.
property:
  path: comment
  datatype: string
  min count: 0
  max count: 1
  min length: 10
  max length: 1000
  message: Partnership comment should be between 10 and 1000 characters when provided.

National Initiative Data Quality Shape
type: NodeShape
target class: NationalInitiativeProgram
comment: Validates data quality for national initiative program instances.
sparql:
  message: National initiative programs should have realistic case processing numbers relative to their duration.
  prefixes:
    declare:
      prefix: cacontology-partnerships
      namespace: https://cacontology.projectvic.org/partnerships#
  select: SELECT $this WHERE { $this cacontology-partnerships:casesProcessed ?cases ; cacontology-partnerships:launchedDate ?launched . BIND (NOW() AS ?now) BIND ((?now - ?launched) / (365.25 * 24 * 60 * 60) AS ?yearsActive) BIND (?cases / ?yearsActive AS ?casesPerYear) FILTER (?casesPerYear > 5000) }

Partnership Participation Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Validates gUFO participation constraints for partnerships.
sparql:
  message: Partnership must have at least 2 participating organizations (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:PublicPrivatePartnership . { SELECT $this (COUNT(DISTINCT ?partner) AS ?partnerCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . } GROUP BY $this } FILTER (?partnerCount < 2) }

Tech Cooperation Participation Shape
type: NodeShape
target class: TechIndustryCooperation
comment: Validates gUFO participation constraints for technology cooperation.
sparql:
  message: Tech cooperation must include at least one technology partner and one law enforcement partner (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:TechIndustryCooperation . FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?techOrg . ?techOrg cacontology-partnerships:hasRole ?techRole . ?techRole rdf:type cacontology-partnerships:TechnologyPartner . } || FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?leOrg . ?leOrg cacontology-partnerships:hasRole ?leRole . ?leRole rdf:type cacontology-partnerships:LawEnforcementPartner . } }

Multi-Stakeholder Participation Shape
type: NodeShape
target class: MultiStakeholderInitiative
comment: Validates gUFO participation constraints for multi-stakeholder initiatives.
sparql:
  message: Multi-stakeholder initiative must include at least 3 different types of partners (gUFO participation constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:MultiStakeholderInitiative . { SELECT $this (COUNT(DISTINCT ?roleType) AS ?roleTypeCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . ?partner cacontology-partnerships:hasRole ?role . ?role rdf:type ?roleType . ?roleType rdfs:subClassOf* cacontology-partnerships:PartnerRole . } GROUP BY $this } FILTER (?roleTypeCount < 3) }

Partnership Composition Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Validates gUFO part-whole relationships for partnership composition.
sparql:
  message: Partnership composition must include complementary organizational capabilities (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:PublicPrivatePartnership . $this cacontology-partnerships:includesPartner ?publicOrg . ?publicOrg cacontology-partnerships:hasRole ?publicRole . ?publicRole rdf:type cacontology-partnerships:LawEnforcementPartner . FILTER NOT EXISTS { $this cacontology-partnerships:includesPartner ?privateOrg . ?privateOrg cacontology-partnerships:hasRole ?privateRole . ?privateRole rdf:type ?privateRoleType . ?privateRoleType rdfs:subClassOf* cacontology-partnerships:PartnerRole . FILTER (?privateRoleType != cacontology-partnerships:LawEnforcementPartner) } }

Technology Cooperation Composition Shape
type: NodeShape
target class: TechnologyCooperation
comment: Validates gUFO part-whole relationships for technology cooperation composition.
sparql:
  message: Technology cooperation must include both technical and operational components (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:TechnologyCooperation . FILTER NOT EXISTS { { ?partnership cacontology-partnerships:coordinatedThrough $this } UNION { ?framework cacontology-partnerships:enablesSharing $this } } }

Information Sharing Composition Shape
type: NodeShape
target class: InformationSharingFramework
comment: Validates gUFO part-whole relationships for information sharing composition.
sparql:
  message: Information sharing framework must be composed of technical and legal components (gUFO part-whole constraint).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:InformationSharingFramework . FILTER NOT EXISTS { ?agreement rdf:type cacontology-partnerships:DataSharingAgreement . ?agreement rdfs:subClassOf* $this . } && FILTER NOT EXISTS { ?technical rdf:type cacontology-partnerships:TechnicalIntegration . ?technical rdfs:subClassOf* $this . } }

Qualified Partnership Participation Shape
type: NodeShape
target class: ParticipationSituation
comment: Validates gUFO qualified participation situations in partnerships.
sparql:
  message: Qualified participation must involve appropriate partnership roles and organizations (gUFO qualified relation).
  select: SELECT $this WHERE { $this rdf:type gufo:ParticipationSituation . $this gufo:participatesIn ?partnership . ?partnership rdf:type cacontology-partnerships:PublicPrivatePartnership . FILTER NOT EXISTS { ?org cacontology-partnerships:hasRole ?role . ?role rdf:type ?roleType . ?roleType rdfs:subClassOf* cacontology-partnerships:PartnerRole . } }

High Effectiveness Partnership Rule
type: NodeShape
target class: PublicPrivatePartnership
comment: Advanced gUFO business rule: Highly effective partnerships should have high trust and coordination levels.
sparql:
  message: Highly effective partnerships must have high trust levels and enhanced coordination (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPartnershipEffectiveness "highly_effective" . { FILTER NOT EXISTS { $this cacontology-partnerships:hasTrustLevel ?trust . FILTER (?trust >= 0.7) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasCoordinationLevel ?coord . FILTER (?coord IN ("enhanced", "comprehensive")) } } }

Technology Maturity Implementation Rule
type: NodeShape
target class: TechnologyCooperation
comment: Advanced gUFO business rule: Mature technology should have fast implementation and high reliability.
sparql:
  message: Mature technology cooperation must have fast implementation speed and high reliability (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:technologyMaturity "mature" . { FILTER NOT EXISTS { $this cacontology-partnerships:hasImplementationSpeed ?speed . FILTER (?speed IN ("fast", "rapid", "immediate")) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasTechnicalReliability ?reliability . FILTER (?reliability >= 0.8) } } }

Crowdsourcing Effectiveness Rule
type: NodeShape
target class: CrowdsourcingInvestigation
comment: Advanced gUFO business rule: High engagement effectiveness requires high participation and response quality.
sparql:
  message: High engagement effectiveness requires high participation level and excellent response quality (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasEngagementEffectiveness ?effectiveness . FILTER (?effectiveness >= 0.8) { FILTER NOT EXISTS { $this cacontology-partnerships:hasParticipationLevel ?participation . FILTER (?participation IN ("high", "massive")) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasResponseQuality ?quality . FILTER (?quality IN ("excellent", "exceptional")) } } }

Information Sharing Security Rule
type: NodeShape
target class: InformationSharingFramework
comment: Advanced gUFO business rule: High data quality requires enhanced security levels.
sparql:
  message: Excellent or verified data quality requires enhanced or high security levels (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasDataQuality ?quality . FILTER (?quality IN ("excellent", "verified")) FILTER NOT EXISTS { $this cacontology-partnerships:hasSecurityLevel ?security . FILTER (?security IN ("enhanced", "high", "maximum")) } }

Partner Role Capability Commitment Rule
type: NodeShape
target class: PartnerRole
comment: Advanced gUFO business rule: High role effectiveness requires advanced capabilities and high commitment.
sparql:
  message: High role effectiveness requires advanced capabilities and high commitment levels (gUFO business rule).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasRoleEffectiveness ?effectiveness . FILTER (?effectiveness >= 0.8) { FILTER NOT EXISTS { $this cacontology-partnerships:hasCapabilityLevel ?capability . FILTER (?capability IN ("advanced", "expert")) } } UNION { FILTER NOT EXISTS { $this cacontology-partnerships:hasCommitmentLevel ?commitment . FILTER (?commitment >= 0.7) } } }

Multi-Stakeholder Complexity Rule
type: NodeShape
target class: MultiStakeholderInitiative
comment: Advanced gUFO business rule: Multi-stakeholder initiatives with many partners need comprehensive coordination.
sparql:
  message: Multi-stakeholder initiatives with 5+ partners need comprehensive coordination level (gUFO business rule).
  select: SELECT $this WHERE { $this rdf:type cacontology-partnerships:MultiStakeholderInitiative . { SELECT $this (COUNT(DISTINCT ?partner) AS ?partnerCount) WHERE { $this cacontology-partnerships:includesPartner ?partner . } GROUP BY $this } FILTER (?partnerCount >= 5) FILTER NOT EXISTS { $this cacontology-partnerships:hasCoordinationLevel "comprehensive" . } }

Partnership Data Quality Shape
type: NodeShape
target class: PublicPrivatePartnership
comment: Enhanced data quality validation for partnerships with gUFO quality consistency rules.
property:
  path: label
  datatype: string
  min count: 0
  max count: 1
  min length: 5
  max length: 200
  message: Partnership label should be between 5 and 200 characters when provided.
property:
  path: comment
  datatype: string
  min count: 0
  max count: 1
  min length: 10
  max length: 1000
  message: Partnership comment should be between 10 and 1000 characters when provided.
sparql:
  message: Partnership effectiveness and success rate should be consistent (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasPartnershipEffectiveness ?effectiveness ; cacontology-partnerships:hasSuccessRate ?rate . { FILTER (?effectiveness = "highly_effective" && ?rate < 0.7) } UNION { FILTER (?effectiveness = "effective" && (?rate < 0.5 || ?rate > 0.8)) } UNION { FILTER (?effectiveness = "moderate" && (?rate < 0.3 || ?rate > 0.6)) } UNION { FILTER (?effectiveness = "limited" && ?rate > 0.4) } UNION { FILTER (?effectiveness = "ineffective" && ?rate > 0.2) } }
sparql:
  message: Trust level and collaboration intensity should be correlated (gUFO quality consistency).
  select: SELECT $this WHERE { $this cacontology-partnerships:hasTrustLevel ?trust ; cacontology-partnerships:hasCollaborationIntensity ?intensity . { FILTER (?trust >= 0.8 && ?intensity NOT IN ("intensive", "fully_integrated")) } UNION { FILTER (?trust <= 0.3 && ?intensity NOT IN ("low", "moderate")) } }