PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX schema: <http://schema.org/>
PREFIX jps: <https://jpsearch.go.jp/term/property#>
PREFIX type: <https://jpsearch.go.jp/term/type/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX jpshape: <https://jpsearch.go.jp/shape/>

jpshape:CHO IRI {
	a IRI ;
	rdfs:label Literal ;
	schema:name Literal+ ;
	schema:contributor (@jpshape:Agent OR IRI)* ;
	schema:temporal (@jpshape:Time OR IRI)* ;
	schema:spatial (@jpshape:Place OR IRI)* ;
	schema:about IRI* ;
	schema:identifier Literal* ;
	schema:isbn Literal* ;
	schema:issn Literal* ;
	schema:inLanguage IRI* ;
	schema:image IRI* ;
	schema:description Literal* ;
	schema:isPartOf (@jpshape:CHO OR IRI)* ;
	schema:relatedLink IRI* ;
	schema:creator (@jpshape:Agent OR IRI)* ;
	schema:publisher (@jpshape:Agent OR IRI)* ;
	schema:dateCreated Literal* ;
	schema:datePublished Literal* ;
	jps:agential @jpshape:Who* ;
	jps:temporal @jpshape:When* ;
	jps:spatial @jpshape:Where* ;
	jps:partOf @jpshape:Upper* ;
	jps:relatedLink @jpshape:Related* ;
	jps:accessInfo @jpshape:Access+ ;
	jps:sourceInfo @jpshape:Source
}

jpshape:Who {
	jps:relationType (@jpshape:Role OR IRI) ;
	jps:value (@jpshape:Agent OR IRI) ;
	schema:description Literal*
}

jpshape:When {
	jps:relationType (@jpshape:Role OR IRI) ;
	jps:value (@jpshape:Time OR IRI) ;
	jps:era (@jpshape:Time OR IRI)? ;
	schema:description Literal* ;
	jps:note Literal?
}

jpshape:Where {
	jps:relationType (@jpshape:Role OR IRI) ;
	jps:value (@jpshape:Place OR IRI) ;
	schema:description Literal* ;
	schema:geo (@jpshape:Geo OR IRI)? ;
	rdfs:seeAlso (@jpshape:Agent OR IRI)? ;
	jps:within (@jpshape:Place OR IRI)? ;
	jps:note Literal?
}

jpshape:Upper {
	jps:relationType (@jpshape:Role OR IRI) ;
	jps:source (@jpshape:CHO OR IRI) ;
	jps:selector Literal* ;
	schema:description Literal*
}

jpshape:Related {
	jps:relationType (@jpshape:Role OR IRI) ;
	schema:url IRI ;
	schema:description Literal*
}

jpshape:Access IRI {
	a [type:アクセス情報] ;
	schema:provider IRI+ ;
	jps:contentHolder IRI? ;
	schema:url IRI* ;
	schema:relatedLink IRI* ;
	schema:associatedMedia (@jpshape:Media OR IRI)* ;
	jps:contentRights Literal? ;
	jps:contentId Literal* ;
	schema:description Literal*
}

jpshape:Source IRI {
	a [type:ソース情報] ;
	schema:provider (@jpshape:Provider OR IRI) ;
	schema:url IRI* ;
	schema:relatedLink IRI* ;
	jps:sourceData IRI ;
	rdfs:seeAlso IRI* ;
	schema:description Literal* ;
	schema:dateModified Literal?
}

jpshape:Time IRI {
	a [type:Time] ;
	rdfs:label Literal ;
	schema:name Literal+ ;
	schema:startDate xsd:gYear ;
	schema:endDate xsd:gYear ;
	jps:start xsd:integer ;
	jps:end xsd:integer ;
	jps:startEntity (@jpshape:Time OR IRI)? ;
	jps:endEntity (@jpshape:Time OR IRI)? ;
	skos:closeMatch (@jpshape:Time OR IRI)? ;
	owl:sameAs IRI*
}

jpshape:Place IRI {
	a [type:Place] ;
	rdfs:label Literal ;
	schema:name Literal+ ;
	schema:geo (@jpshape:Geo OR IRI)? ;
	schema:isPartOf (@jpshape:Place OR IRI)*
}

jpshape:Agent IRI {
	a [type:Agent] ;
	rdfs:label Literal ;
	schema:name Literal+ ;
	owl:sameAs IRI* ;
	schema:image IRI* ;
	schema:location (@jpshape:Place OR IRI)*
}

jpshape:Geo {
	schema:latitude xsd:decimal ;
	schema:longitude xsd:decimal ;
	jps:within (@jpshape:Place OR IRI)? ;
	jps:note Literal?
}

jpshape:Role IRI {
	a [type:Role] ;
	rdfs:label Literal ;
	skos:broader (@jpshape:Role OR IRI)?
}

jpshape:Provider IRI {
	rdfs:label Literal ;
	schema:name Literal+ ;
	schema:sourceOrganization IRI
}

jpshape:Media IRI {
	a IRI* ;
	schema:license IRI*
}
