migrants/queries/step_06_2hop_example.rq
Daniel Hernandez c79ae45859 Add Step 6: map to Theatre Migrants ontology (tm: namespace)
SPARQL CONSTRUCT queries transform graph-05 into graph-06 using the tm:
vocabulary. Persons keep schema:Person properties, works become
org:Membership, professions become schema:Occupation, enumerations
become skos:Concept with tm: subtypes. Split 010-occupations into two
query files (passthrough + retype). Includes step-06 binary, Rakefile
tasks, and example data for Irene Abendroth.
2026-03-01 12:20:40 +01:00

41 lines
1.1 KiB
SPARQL

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX schema: <https://schema.org/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX wdtn: <http://www.wikidata.org/prop/direct-normalized/>
PREFIX tm: <https://daniel.degu.cl/ontologies/theatre-migrants/>
PREFIX person: <http://example.org/migrants/person/>
CONSTRUCT {
?s ?p ?o .
}
WHERE {
{
# Hop 0: Triples about Irene Abendroth (as subject)
?s ?p ?o .
FILTER(?s = person:AbeIre-00)
}
UNION
{
# Hop 1 (incoming): Triples about nodes referencing the anchor
?s ?p ?o .
?s ?ref person:AbeIre-00 .
}
UNION
{
# Hop 1 (outgoing): Triples about IRI nodes referenced by the anchor
?s ?p ?o .
person:AbeIre-00 ?ref ?s .
FILTER(isIRI(?s))
}
UNION
{
# Hop 2: Triples about IRI nodes referenced by hop-1 nodes
?s ?p ?o .
?hop1 ?r1 person:AbeIre-00 .
?hop1 ?r2 ?s .
FILTER(isIRI(?s) && ?s != person:AbeIre-00)
}
}