This document lists the competency questions (CQs) defined for the LCAnet ontology network, together with a brief description and the corresponding SPARQL query evaluated over the StorAIge IC manufacturing knowledge graph.
All queries use the following prefix declarations:
PREFIX core: <https://w3id.org/lcanet/core#>
PREFIX act: <https://w3id.org/lcanet/activity#>
PREFIX actor: <https://w3id.org/lcanet/actor#>
PREFIX prop: <https://w3id.org/lcanet/property#>
PREFIX st: <https://w3id.org/lcanet/st#>
PREFIX ia: <https://w3id.org/lcanet/ia#>
PREFIX ic: <https://w3id.org/lcanet/ICdata#>
PREFIX qudt: <http://qudt.org/schema/qudt#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
Question: What are the input and output flows of all activities?
Description: Retrieves all activities in the knowledge graph together with their associated input and output flows, distinguishing the direction of each flow. Covers the Activity module.
SELECT ?activity ?activityLabel ?flow ?flowType
WHERE {
?activity a act:Activity .
OPTIONAL { ?activity rdfs:label ?activityLabel . }
{
?activity act:hasInputProduct ?flow .
BIND("input" AS ?flowType)
}
UNION
{
?activity act:hasOutputFlow ?flow .
BIND("output" AS ?flowType)
}
}
ORDER BY ?flowType ?flow
Question: What is the dependency chain of activities in a system model?
Description: Retrieves the direct and recursive upstream dependency chain of a given activity by traversing flow connectivity relations. Demonstrates LCAnet’s ability to navigate complex activity/flow diagrams using SPARQL property paths. Covers the Activity module.
Part 1 — Direct dependency:
SELECT ?activity ?downstreamActivity ?inputFlow
WHERE {
?activity a act:Activity ;
rdfs:label "Production of Mother Board" ;
act:hasInputProduct ?inputFlow .
{
{?inputFlow act:connected ?outputFlow}
UNION
{?outputFlow act:connected ?inputFlow}
}
{
{?outputFlow act:isOutputProductOf ?downstreamActivity }
UNION
{?downstreamActivity act:hasOutputProduct ?outputFlow}
}
}
Part 2 — Recursive dependency (full chain):
SELECT ?activity ?dependentActivity
WHERE {
?activity a act:Activity ;
rdfs:label "Production of Mother Board" ;
act:hasInputProduct ?inputFlow .
{
{?inputFlow act:connected ?outputFlow}
UNION
{?outputFlow act:connected ?inputFlow}
}
{
{?outputFlow act:isOutputProductOf ?intermediateActivity }
UNION
{?intermediateActivity act:hasOutputProduct ?outputFlow}
}
?intermediateActivity
( act:hasInputProduct /
act:connected /
act:isOutputProductOf )* ?dependentActivity .
}
Question: Which flow datasets come from database X?
Description: Retrieves all flows whose provenance metadata (stored as a QualitativeProperty individual) indicates a specified data source. Covers the Activity and Property modules.
SELECT ?flow ?flowLabel
WHERE {
?flow core:hasProperty ?x .
?x rdfs:label "Database_Source" ;
prop:hasQualityValue "CODDE (v3.00.000)" .
OPTIONAL { ?flow rdfs:label ?flowLabel . }
}
Question: What are the elementary and intermediate flows associated with a given activity?
Description: Retrieves all flows associated with a specific activity that are classified as elementary or intermediate, based on their environment type or explicit typing. Covers the Activity module.
SELECT ?flow ?flowLabel
WHERE {
?flow a act:Flow ;
act:isOutputFlowOf ?activity .
?activity rdfs:label "Production of Mother Board" .
OPTIONAL { ?flow rdfs:label ?flowLabel . }
}
Question: Which flows are classified as resources, emissions, or products?
Description: Retrieves all flows in the knowledge graph and identifies their classification type (elementary, intermediate, emission, or resource), together with their associated environment compartment where applicable. Covers the Activity module.
SELECT DISTINCT ?flow ?flowName ?flowType ?source
WHERE {
OPTIONAL { ?flow rdfs:label ?flowName . }
OPTIONAL {
?flow a act:IntermediateFlow ;
act:hasEnvironmentalType ?intEnv .
BIND("Intermediate" AS ?flowType)
BIND(?intEnv AS ?source)
}
OPTIONAL {
?flow a act:ElementaryFlow .
BIND("Elementary" AS ?flowType)
}
OPTIONAL {
?flow a act:EmissionFlow ;
act:hasEnvironmentalType ?emEnv .
BIND(CONCAT("Emission to ", STR(?emEnv)) AS ?source)
}
OPTIONAL {
?flow a act:ResourceFlow ;
act:hasEnvironmentalType ?resEnv .
BIND(CONCAT("Resource from ", STR(?resEnv)) AS ?source)
}
}
ORDER BY ?flow
Question: What is the functional unit, scope, system boundary, spatiotemporal scales, and responsible agent of the LCA model?
Description: Retrieves the full metadata description of an LCA study, including its goal, life cycle stages, functional unit, reference flow, system boundary, temporal and spatial scales, and assumptions. Covers the Core module.
SELECT ?lcaModel
(SAMPLE(?goal) AS ?goal)
(GROUP_CONCAT(DISTINCT ?lcStage; separator=", ") AS ?lcStages)
(SAMPLE(?functionalUnit) AS ?functionalUnit)
(SAMPLE(?referenceFlow) AS ?referenceFlow)
(GROUP_CONCAT(DISTINCT ?ass; separator=" | ") AS ?assumptions)
(SAMPLE(?systemBoundary) AS ?systemBoundary)
(SAMPLE(?temporalScale) AS ?temporalScale)
(SAMPLE(?spatialScale) AS ?spatialScale)
WHERE {
?lcaModel a core:LcaModel ;
core:lcaModelConcernsLCStage ?lcStage ;
core:lcaModelHasScope ?scope .
?scope core:scopeHasFunctionalUnit ?functionalUnit ;
core:scopeHasReferenceFlow ?referenceFlow .
OPTIONAL {
?scope core:scopeHasTemporalScale ?temporalScale ;
core:scopeHasSpatialScale ?spatialScale ;
core:scopeHasSystemBoundary ?systemBoundary ;
core:scopeHasAssumption ?ass .
}
OPTIONAL { ?lcaModel core:lcaModelHasGoal ?goal . }
}
GROUP BY ?lcaModel
Question: What is the impact result of a given activity or flow across impact categories?
Description: Retrieves impact result values associated with activities or flows, together with their corresponding impact categories. Covers the Impact Assessment and Core modules.
For flows:
SELECT ?impactResult ?impactResultValue ?flow ?impactCategory
WHERE {
?impactResult a ia:LcaResult ;
core:impactResultConcernsFlow ?flow ;
ia:hasIC ?impactCategory ;
qudt:numericValue ?impactResultValue .
}
For activities:
SELECT ?impactResult ?impactResultValue ?act ?impactCategory
WHERE {
?impactResult a ia:LcaResult ;
core:impactResultConcernsActivity ?act ;
ia:hasIC ?impactCategory ;
qudt:numericValue ?impactResultValue .
}
Question: Which activities contribute more than 2% to a given impact category?
Description: Computes the relative contribution of each activity to a specified impact category by comparing individual impact results against the overall impact result. Uses cross-module relations between the Activity, Impact Assessment, and Core modules. The containedInOIR relation is partially inferred via SWRL rules.
SELECT ?activity ?impactResultValue ?percentage
WHERE {
?impactCategory a ia:ImpactCategory ;
rdfs:label "Climate change, total" .
?overallIR a ia:OverallImpactResult ;
ia:hasIC ?impactCategory ;
qudt:numericValue ?overallImpactValue .
?impactResult a ia:LcaResult ;
core:impactResultConcernsActivity ?activity ;
ia:hasIC ?impactCategory ;
qudt:numericValue ?impactResultValue ;
ia:containedInOIR ?overallIR .
BIND(
xsd:decimal(REPLACE(STR(?impactResultValue), ",", ".")) /
xsd:decimal(REPLACE(STR(?overallImpactValue), ",", "."))
AS ?percentage
)
FILTER(?percentage > 0.02)
FILTER(?overallImpactValue != 0)
}
ORDER BY DESC(?percentage)
Question: What are the top contributing flows to an impact category for a given activity?
Description: Retrieves the flows that are inputs to a given activity and ranks them by their relative contribution to a specified impact category, computed against the activity-level impact result. Covers the Activity, Impact Assessment, and Core modules.
SELECT ?flow ?activity ?flowImpactResult ?flowImpactValue ?percentage
WHERE {
?impactCategory a ia:ImpactCategory ;
rdfs:label "Climate change, total" .
?activityImpactResult a ia:LcaResult ;
core:impactResultConcernsActivity ?activity ;
ia:hasIC ?impactCategory ;
qudt:numericValue ?activityImpactValue .
?activity rdfs:label "Production of Daughter Board" .
?flow act:isInputFlowOf ?activity .
OPTIONAL {
?flow core:flowHasImpactResult ?flowImpactResult .
?flowImpactResult qudt:numericValue ?flowImpactValue .
}
BIND(
IF(BOUND(?flowImpactValue),
xsd:decimal(REPLACE(STR(?flowImpactValue), ",", ".")) /
xsd:decimal(REPLACE(STR(?activityImpactValue), ",", ".")),
0
) AS ?percentage
)
}
ORDER BY DESC(?percentage)
Question: What is the total amount of flow X generated within the system boundary?
Description: Retrieves the total quantitative amount of a specified flow produced or consumed within the system boundary of the LCA study. Covers the Property and Activity modules.
SELECT ?flow ?relatedTo ?activity ?SurfaceProperty
WHERE {
VALUES ?flow {
<https://w3id.org/lcanet/ICdata#IC-Chinese_Circuit_i>
}
?activity a act:Activity ;
act:hasInputFlow ?flow .
BIND("input of" AS ?relatedTo)
?flow a act:Flow;
core:hasProperty ?x.
?x prop:hasQuantityValue ?SurfaceProperty .
}
| ID | Theme | Competency Question | Modules |
|---|---|---|---|
| CQ1 | Activity | What are the input and output flows of all activities? | act |
| CQ2 | Activity | What is the dependency chain of activities in a system model? | act |
| CQ3 | Flow | Which flow datasets come from database X? | act, prop |
| CQ4 | Flow | What are the elementary and intermediate flows associated with an activity? | act |
| CQ5 | Flow | Which flows are classified as resources, emissions, or products? | act |
| CQ6 | System model | What is the functional unit, scope, system boundary, and spatiotemporal scales of the LCA model? | st, core |
| CQ7 | Impact Assessment | What is the impact result of a given activity or flow across impact categories? | ia, core |
| CQ8 | Impact Assessment | Which activities contribute more than 2% to a given impact category? | ia, core, act |
| CQ9 | Impact Assessment | What are the top contributing flows to an impact category for a given activity? | ia, act, core |
| CQ10 | Data quality | Which flows are associated with a given assessment methodology? | prop, act |
LCAnet ontology network — https://w3id.org/lcanet