Loading experience...
Loading experience...
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?item_uri ?item_label ?role_type ?item_type
WHERE {
BIND(<https://w3id.org/OntoExhibit#human_actant/f7bed5280c1e95a103646c4020aa449d3da80fd079339e51b159cc93b34da857> AS ?actor)
# Link Actor to Role (check both directions)
{ ?actor <https://w3id.org/OntoExhibit#hasRole> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isRoleOf> ?actor }
# --- EXHIBITION ROLES ---
{
{
# Exhibitor
{ ?making <https://w3id.org/OntoExhibit#hasExhibitingActant> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isExhibitingActantIn> ?making }
BIND("Exhibitor" AS ?role_type)
}
UNION
{
# Curator
{ ?making <https://w3id.org/OntoExhibit#hasCurator> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isCuratorOf> ?making }
BIND("Curator" AS ?role_type)
}
UNION
{
# Organizer
{ ?making <https://w3id.org/OntoExhibit#hasOrganizer> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isOrganizerOf> ?making }
BIND("Organizer" AS ?role_type)
}
UNION
{
# Funder
{ ?making <https://w3id.org/OntoExhibit#hasFunder> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isFunderOf> ?making }
BIND("Funder" AS ?role_type)
}
UNION
{
# Lender
{ ?making <https://w3id.org/OntoExhibit#hasLender> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isLenderOf> ?making }
BIND("Lender" AS ?role_type)
}
# Get the exhibition from making
?making <https://w3id.org/OntoExhibit#isExhibitionMakingOf> ?item_uri .
BIND("exhibition" AS ?item_type)
}
# --- ARTWORK ROLES ---
UNION
{
# Author
{
{ ?prod <https://w3id.org/OntoExhibit#hasProductionAuthor> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isProductionAuthorOf> ?prod }
?item_uri <https://w3id.org/OntoExhibit#hasProduction> ?prod .
BIND("Author" AS ?role_type)
}
UNION
{
# Owner
{ ?item_uri <https://w3id.org/OntoExhibit#hasOwner> ?role }
UNION
{ ?role <https://w3id.org/OntoExhibit#isOwnerOf> ?item_uri }
BIND("Owner" AS ?role_type)
}
BIND("artwork" AS ?item_type)
}
?item_uri rdfs:label ?item_label .
}
ORDER BY ?item_label
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?uri
(SAMPLE(COALESCE(?inner_person_name, ?inner_group_name, ?inner_label, "")) as ?label)
(SAMPLE(?inner_label_place) as ?label_place)
(SAMPLE(?inner_place_uri) as ?place_uri)
(SAMPLE(?inner_label_date) as ?label_date)
(SAMPLE(?inner_death_date) as ?death_date)
(SAMPLE(?inner_gender) as ?gender)
(GROUP_CONCAT(DISTINCT ?inner_activity; separator="|") as ?activity)
(SAMPLE(?inner_residence_address) as ?residence_address)
(SAMPLE(?inner_residence_lat) as ?residence_lat)
(SAMPLE(?inner_residence_long) as ?residence_long)
(SAMPLE(?inner_foundation_place_label) as ?foundation_place_label)
(SAMPLE(?inner_foundation_date_label) as ?foundation_date_label)
(SAMPLE(?inner_foundation_place_uri) as ?foundation_place_uri)
(SAMPLE(?inner_entity_type) as ?entity_type)
(SAMPLE(?inner_dissolution_date) as ?dissolution_date_label)
WHERE
{
{
?uri rdf:type <https://w3id.org/OntoExhibit#Human_Actant> .
}
UNION
{
?uri rdf:type <https://cidoc-crm.org/cidoc-crm/7.1.1/E21_Person> .
}
UNION
{
?uri rdf:type <https://cidoc-crm.org/cidoc-crm/7.1.1/E74_Group> .
}
OPTIONAL { ?uri rdfs:label ?inner_label }
OPTIONAL { ?uri <https://w3id.org/OntoExhibit#person_name> ?inner_person_name }
OPTIONAL { ?uri <https://w3id.org/OntoExhibit#name> ?inner_group_name }
OPTIONAL
{
?uri <https://w3id.org/OntoExhibit#hasBirth> ?birth .
OPTIONAL {
?birth <https://w3id.org/OntoExhibit#hasPlaceOfBirth> ?inner_place_uri .
?inner_place_uri rdfs:label ?inner_label_place
}
OPTIONAL {
?birth <https://w3id.org/OntoExhibit#hasTimeSpan> ?birth_date .
?birth_date rdfs:label ?inner_label_date
}
}
OPTIONAL
{
?uri <https://w3id.org/OntoExhibit#hasDeath> ?death .
?death <https://w3id.org/OntoExhibit#hasTimeSpan> ?death_date_uri .
?death_date_uri rdfs:label ?inner_death_date
}
OPTIONAL { ?uri <https://w3id.org/OntoExhibit#gender> ?inner_gender }
OPTIONAL { ?uri <https://w3id.org/OntoExhibit#activity_type> ?inner_activity }
OPTIONAL {
?uri <https://w3id.org/OntoExhibit#hasResidency> ?residence .
?residence rdf:type <https://w3id.org/OntoExhibit#Place_Of_Residence> .
OPTIONAL { ?residence <https://w3id.org/OntoExhibit#address> ?inner_residence_address }
OPTIONAL { ?residence <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?inner_residence_lat }
OPTIONAL { ?residence <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?inner_residence_long }
}
OPTIONAL {
?uri <https://w3id.org/OntoExhibit#hasFoundation> ?foundation .
OPTIONAL {
?foundation <https://w3id.org/OntoExhibit#hasPlaceOfFoundation> ?inner_foundation_place_uri .
?inner_foundation_place_uri rdfs:label ?inner_foundation_place_label
}
OPTIONAL {
?foundation <https://w3id.org/OntoExhibit#hasTimeSpan> ?foundation_time .
?foundation_time rdfs:label ?inner_foundation_date_label
}
}
OPTIONAL {
?uri <https://w3id.org/OntoExhibit#hasDissolution> ?dissolution .
?dissolution <https://w3id.org/OntoExhibit#hasTimeSpan> ?dissolution_time .
?dissolution_time rdfs:label ?inner_dissolution_date
}
# Determine entity type
OPTIONAL { ?uri rdf:type <https://cidoc-crm.org/cidoc-crm/7.1.1/E74_Group> . BIND("group" AS ?inner_entity_type) }
FILTER (regex(str(?uri), "f7bed5280c1e95a103646c4020aa449d3da80fd079339e51b159cc93b34da857", "i"))
}
GROUP BY ?uri
ORDER BY ?label
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?collaborator_uri ?collaborator_label ?collaborator_type ?relationship_type
WHERE {
BIND(<https://w3id.org/OntoExhibit#human_actant/f7bed5280c1e95a103646c4020aa449d3da80fd079339e51b159cc93b34da857> AS ?person)
# --- MEMBERSHIPS (Person <-> Group) ---
{
{
# Case 1: The 'person' IS A GROUP (querying a group's members)
# Pattern: Group (person_id) -> hasMember -> Membership -> isMembershipOf -> Person (collaborator)
?person <https://w3id.org/OntoExhibit#hasMember> ?membership .
?membership <https://w3id.org/OntoExhibit#isMembershipOf> ?collaborator_uri .
BIND("membership" AS ?relationship_type)
}
UNION
{
# Case 2: The 'person' IS A PERSON (querying a person's groups)
# Pattern: Person (person_id) -> hasMembership -> Membership -> isMemberOf -> Group (collaborator)
?person <https://w3id.org/OntoExhibit#hasMembership> ?membership .
?membership <https://w3id.org/OntoExhibit#isMemberOf> ?collaborator_uri .
BIND("membership" AS ?relationship_type)
}
}
UNION
# --- AFFILIATIONS (Person <-> Institution) ---
{
{
# Person has affiliation (Person is affiliated with an Institution)
?person <https://w3id.org/OntoExhibit#hasAffiliation> ?affiliation .
?affiliation <https://w3id.org/OntoExhibit#isAffiliatedWith> ?collaborator_uri .
BIND("affiliation" AS ?relationship_type)
}
UNION
{
# Institution has affiliated (Institution has this person affiliated) - though query starts with person
?collaborator_uri <https://w3id.org/OntoExhibit#hasAffiliated> ?affiliation .
?affiliation <https://w3id.org/OntoExhibit#isAffiliationOf> ?person .
BIND("affiliation" AS ?relationship_type)
}
}
?collaborator_uri rdfs:label ?collaborator_label .
# Determine collaborator type
OPTIONAL {
{ ?collaborator_uri rdf:type <https://w3id.org/OntoExhibit#Human_Actant> . BIND("person" AS ?type_person) }
UNION
{ ?collaborator_uri rdf:type <https://cidoc-crm.org/cidoc-crm/7.1.1/E21_Person> . BIND("person" AS ?type_person) }
UNION
{ ?collaborator_uri rdf:type <https://cidoc-crm.org/cidoc-crm/7.1.1/E74_Group> . BIND("group" AS ?type_group) }
UNION
{ ?collaborator_uri rdf:type <https://w3id.org/OntoExhibit#Institution> . BIND("institution" AS ?type_inst) }
UNION
{ ?collaborator_uri rdf:type <https://w3id.org/OntoExhibit#Museum> . BIND("institution" AS ?type_inst) }
UNION
{ ?collaborator_uri rdf:type <https://w3id.org/OntoExhibit#Cultural_Institution> . BIND("institution" AS ?type_inst) }
}
BIND(COALESCE(?type_inst, ?type_group, ?type_person, "unknown") AS ?collaborator_type)
}
ORDER BY ?collaborator_label
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?institution_uri ?institution_label
WHERE {
BIND(<https://w3id.org/OntoExhibit#human_actant/f7bed5280c1e95a103646c4020aa449d3da80fd079339e51b159cc93b34da857> AS ?person)
# Executive position links person to institution
?exec_position rdf:type <https://w3id.org/OntoExhibit#Executive_Position> .
?exec_position <https://w3id.org/OntoExhibit#isExecutivePositionOf> ?person .
?exec_position <https://w3id.org/OntoExhibit#executivePositionHeldsIn> ?institution_uri .
?institution_uri rdfs:label ?institution_label .
}
ORDER BY ?institution_label
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?catalog_uri ?catalog_label ?exhibition_uri ?exhibition_label
WHERE {
# Find any entity (human_actant or institution) whose URI ends with the given ID
?actant_uri <https://w3id.org/OntoExhibit#hasRole> ?producer_role .
FILTER(STRENDS(STR(?actant_uri), "/f7bed5280c1e95a103646c4020aa449d3da80fd079339e51b159cc93b34da857"))
# The producer role is linked to a production
?producer_role <https://w3id.org/OntoExhibit#isProducerOf> ?production .
# The production is for a catalog
?production <https://w3id.org/OntoExhibit#isProductionOf> ?catalog_uri .
?catalog_uri rdfs:label ?catalog_label .
# Optionally get the related exhibition
OPTIONAL {
?catalog_uri <https://w3id.org/OntoExhibit#servesAsDocumentationResourceOf> ?doc_dispositif .
?doc_dispositif <https://w3id.org/OntoExhibit#isDocumentationDispositifOf> ?exhibition_uri .
?exhibition_uri rdfs:label ?exhibition_label .
}
}