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) {