diff --git a/samples/deep-notebook/deep-relative-path.sparqlbook b/samples/deep-notebook/deep-relative-path.sparqlbook
new file mode 100644
index 0000000..709db5c
--- /dev/null
+++ b/samples/deep-notebook/deep-relative-path.sparqlbook
@@ -0,0 +1,8 @@
+[
+ {
+ "kind": 2,
+ "language": "sparql",
+ "value": "# [endpoint=../deep/deep.ttl]\n\nSELECT * WHERE {\n ?s ?p ?o\n}",
+ "metadata": {}
+ }
+]
\ No newline at end of file
diff --git a/samples/deep/deep.ttl b/samples/deep/deep.ttl
new file mode 100644
index 0000000..220159c
--- /dev/null
+++ b/samples/deep/deep.ttl
@@ -0,0 +1,3 @@
+@prefix ex: .
+
+ex:A a ex:Class1 .
diff --git a/samples/multi-endpoiont.sparqlbook b/samples/multi-endpoiont.sparqlbook
index c6818c2..58668a5 100644
--- a/samples/multi-endpoiont.sparqlbook
+++ b/samples/multi-endpoiont.sparqlbook
@@ -46,5 +46,11 @@
"language": "sparql",
"value": "# [endpoint=rdf/a.ttl]\n# Test [endpoint=https://query.wikidata.org/bigdata/namespace/wdq/sparql] Test \n# \nPREFIX wd: \nPREFIX wdt: \nPREFIX wikibase: \nPREFIX bd: \n\nSELECT DISTINCT ?euMemberCountry ?euMemberCountryLabel ?headOfState ?headOfStateLabel\n \nWHERE {\n ?euMemberCountry wdt:P463 wd:Q458;\n wdt:P35 ?headOfState .\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\". }\n}",
"metadata": {}
+ },
+ {
+ "kind": 2,
+ "language": "sparql",
+ "value": "# [endpoint=./deep/deep.ttl]\n\nSELECT * WHERE {\n ?s ?p ?o\n}",
+ "metadata": {}
}
]
\ No newline at end of file
diff --git a/src/extension/notebook/sparql-notebook-controller.ts b/src/extension/notebook/sparql-notebook-controller.ts
index 137fd07..6a3a127 100644
--- a/src/extension/notebook/sparql-notebook-controller.ts
+++ b/src/extension/notebook/sparql-notebook-controller.ts
@@ -275,11 +275,21 @@ export class SparqlNotebookController {
fileUri.push(...files);
} else {
// Relative pattern
- const relativePatternString = filePathPattern.startsWith('./') ? filePathPattern.replace('./', '') : filePathPattern;
+
+ const relativePatternStringFromNotebook = filePathPattern.startsWith('./') ? filePathPattern.replace('./', '') : filePathPattern;
const notebookDirectory = path.dirname(notebookUri!.fsPath);
- const relativePattern = new RelativePattern(notebookDirectory, relativePatternString);
+ const normalizedPattern = path.normalize(path.join(notebookDirectory, filePathPattern));
+
+ const fileName = path.basename(normalizedPattern);
+ const directory = path.dirname(normalizedPattern);
+
+ const relativePattern = new RelativePattern(directory, fileName);
const files = await workspace.findFiles(relativePattern);
+
fileUri.push(...files);
+ if (files.length === 0) {
+ window.showErrorMessage(`No files found for pattern ${filePathPattern}`);
+ }
}
for (const uri of fileUri) {