Re: [basex-talk] importing namespace declarations into the main module

2019-08-13 Thread Christian Grün
Hi Reece,

Thanks for your reply; I immediately thought that such an extension
would have various effects on external tools, such as your XQuery
plugin. And I strongly agree that we should further discuss this on
the xpath-ng project if the proposal should gain some momentum,
because there are simply too many ways how such an extension could
look like (the inclusion could be a replacement in the original query
string, which was my original thought, but it could be much more).

For now, I am wondering if there are more people around who believe
that they would benefit from such a new statement in XQuery?

Best regards,
Christian


On Sun, Aug 11, 2019 at 8:48 PM Reece Dunn  wrote:
>
> Hi Christian,
>
> Would that allow just prolog header statements (import statements, 
> declarations), or also allow prolog body statements (functions, variables, 
> options, etc.)?
>
> Would that include imported schema types from the included modules schema 
> import statements?
>
> If it is just a simple string substitution, how do you deal with things like 
> the included modules having their own VersionDecl or ModuleDecl statements, 
> and breaking the order of header and body statements?
>
> How do you resolve potential namespace redeclarations and multiple import 
> conflicting/overlapping statements being pulled in?
>
> Both Java and Python allow you to specify which statements (classes) to 
> import, so maybe something like:
>
> import prolog namespaces a, b, c from "path/to/module.xqm"
>
> NOTE: This would be something worth raising on the xpath-ng project.
>
> Kind regards,
> Reece
>
> On Sun, 11 Aug 2019 at 19:19, Christian Grün  
> wrote:
>>
>> Hi Graydon,
>>
>> We could possibly introduce an include statement:
>>
>> include 'path/to/module.xqm';
>>
>> In contrast to 'import module', the contents of the addressed file would 
>> simply be inserted as string into the original module. The inserted string 
>> could contain any other declarations that are allowed in the prolog of a 
>> query.
>>
>> More suggestions are welcome; I would particularly interested if other users 
>> would benefit from such an extension as well?
>>
>> Christian
>>
>>
>>
>>
>> Graydon Saunders  schrieb am So., 11. Aug. 2019, 20:07:
>>>
>>> Hi Christian --
>>>
>>> Appreciate the confirmation!
>>>
>>> Any chance of some syntactic sugar for this in a future BaseX release?
>>>
>>> The use case is writing a bunch of distinct queries to pull stuff out of 
>>> complex formats like OOXML or Opendocument; there are many namespaces 
>>> involved, it's important to have them all defined, and it'd be nice to be 
>>> able to abstract groups of definitions for re-use across queries.  So some 
>>> way to specify "get that bunch of definitions in the current context" would 
>>> be nice.  (But, admittedly, by no means necessary.)
>>>
>>> Thanks!
>>> Graydon
>>>
>>> On Sun, Aug 11, 2019 at 8:36 AM Christian Grün  
>>> wrote:

 Hi Graydon,

 Your assumptions were correct: If namespaces are declared in another
 module, they will be only valid in the scope of that module, and not
 in the importing module.

 If your local element names are unique, and if you prefer short path
 expressions, you can always use a wildcard prefix (*:...); but that
 answer is actually not part of your question anymore ;)

 Best
 Christian



 On Fri, Aug 9, 2019 at 9:14 PM Graydon Saunders  
 wrote:
 >
 > Hi --
 >
 > I'm pretty sure this isn't a thing, but I thought I'd ask.
 >
 > I have a raft of namespace declarations because I'm pulling information 
 > out of Open Document documents.  I'd like to put all thirty-odd of these 
 > declarations in their own file and import that, but I'm pretty sure I 
 > can't because that imported module would need its own namespace and this 
 > would keep its internal namespace declarations from being in scope for 
 > the main module, where I actually want them declared.
 >
 > Is there a way to do this?  It's not critical, it's an outbreak of 
 > neatness, but it would be a nice neatness.
 >
 > Thanks!
 > Graydon


Re: [basex-talk] importing namespace declarations into the main module

2019-08-11 Thread Graydon Saunders
Can you put an include in an include?

The difficulty I'd have with
import prolog namespaces a, b, c from "path/to/module.xqm"
is that'd be  up to ,mm or ,nn and that doesn't help with neatness of
expression.

If I could go
include prolog namespaces from "path/to/module.xqm"
and get all the namespace declarations in path/to/module.xqm that'd be
great but it's also making include clever.

-- Graydon


On Sun, Aug 11, 2019 at 2:48 PM Reece Dunn  wrote:

> Hi Christian,
>
> Would that allow just prolog header statements (import statements,
> declarations), or also allow prolog body statements (functions, variables,
> options, etc.)?
>
> Would that include imported schema types from the included modules schema
> import statements?
>
> If it is just a simple string substitution, how do you deal with things
> like the included modules having their own VersionDecl or ModuleDecl
> statements, and breaking the order of header and body statements?
>
> How do you resolve potential namespace redeclarations and multiple import
> conflicting/overlapping statements being pulled in?
>
> Both Java and Python allow you to specify which statements (classes) to
> import, so maybe something like:
>
> import prolog namespaces a, b, c from "path/to/module.xqm"
>
> NOTE: This would be something worth raising on the xpath-ng project.
>
> Kind regards,
> Reece
>
> On Sun, 11 Aug 2019 at 19:19, Christian Grün 
> wrote:
>
>> Hi Graydon,
>>
>> We could possibly introduce an include statement:
>>
>> include 'path/to/module.xqm';
>>
>> In contrast to 'import module', the contents of the addressed file would
>> simply be inserted as string into the original module. The inserted string
>> could contain any other declarations that are allowed in the prolog of a
>> query.
>>
>> More suggestions are welcome; I would particularly interested if other
>> users would benefit from such an extension as well?
>>
>> Christian
>>
>>
>>
>>
>> Graydon Saunders  schrieb am So., 11. Aug. 2019,
>> 20:07:
>>
>>> Hi Christian --
>>>
>>> Appreciate the confirmation!
>>>
>>> Any chance of some syntactic sugar for this in a future BaseX release?
>>>
>>> The use case is writing a bunch of distinct queries to pull stuff out of
>>> complex formats like OOXML or Opendocument; there are many namespaces
>>> involved, it's important to have them all defined, and it'd be nice to be
>>> able to abstract groups of definitions for re-use across queries.  So some
>>> way to specify "get that bunch of definitions in the current context" would
>>> be nice.  (But, admittedly, by no means necessary.)
>>>
>>> Thanks!
>>> Graydon
>>>
>>> On Sun, Aug 11, 2019 at 8:36 AM Christian Grün <
>>> christian.gr...@gmail.com> wrote:
>>>
 Hi Graydon,

 Your assumptions were correct: If namespaces are declared in another
 module, they will be only valid in the scope of that module, and not
 in the importing module.

 If your local element names are unique, and if you prefer short path
 expressions, you can always use a wildcard prefix (*:...); but that
 answer is actually not part of your question anymore ;)

 Best
 Christian



 On Fri, Aug 9, 2019 at 9:14 PM Graydon Saunders 
 wrote:
 >
 > Hi --
 >
 > I'm pretty sure this isn't a thing, but I thought I'd ask.
 >
 > I have a raft of namespace declarations because I'm pulling
 information out of Open Document documents.  I'd like to put all thirty-odd
 of these declarations in their own file and import that, but I'm pretty
 sure I can't because that imported module would need its own namespace and
 this would keep its internal namespace declarations from being in scope for
 the main module, where I actually want them declared.
 >
 > Is there a way to do this?  It's not critical, it's an outbreak of
 neatness, but it would be a nice neatness.
 >
 > Thanks!
 > Graydon

>>>


Re: [basex-talk] importing namespace declarations into the main module

2019-08-11 Thread Reece Dunn
Hi Christian,

Would that allow just prolog header statements (import statements,
declarations), or also allow prolog body statements (functions, variables,
options, etc.)?

Would that include imported schema types from the included modules schema
import statements?

If it is just a simple string substitution, how do you deal with things
like the included modules having their own VersionDecl or ModuleDecl
statements, and breaking the order of header and body statements?

How do you resolve potential namespace redeclarations and multiple import
conflicting/overlapping statements being pulled in?

Both Java and Python allow you to specify which statements (classes) to
import, so maybe something like:

import prolog namespaces a, b, c from "path/to/module.xqm"

NOTE: This would be something worth raising on the xpath-ng project.

Kind regards,
Reece

On Sun, 11 Aug 2019 at 19:19, Christian Grün 
wrote:

> Hi Graydon,
>
> We could possibly introduce an include statement:
>
> include 'path/to/module.xqm';
>
> In contrast to 'import module', the contents of the addressed file would
> simply be inserted as string into the original module. The inserted string
> could contain any other declarations that are allowed in the prolog of a
> query.
>
> More suggestions are welcome; I would particularly interested if other
> users would benefit from such an extension as well?
>
> Christian
>
>
>
>
> Graydon Saunders  schrieb am So., 11. Aug. 2019,
> 20:07:
>
>> Hi Christian --
>>
>> Appreciate the confirmation!
>>
>> Any chance of some syntactic sugar for this in a future BaseX release?
>>
>> The use case is writing a bunch of distinct queries to pull stuff out of
>> complex formats like OOXML or Opendocument; there are many namespaces
>> involved, it's important to have them all defined, and it'd be nice to be
>> able to abstract groups of definitions for re-use across queries.  So some
>> way to specify "get that bunch of definitions in the current context" would
>> be nice.  (But, admittedly, by no means necessary.)
>>
>> Thanks!
>> Graydon
>>
>> On Sun, Aug 11, 2019 at 8:36 AM Christian Grün 
>> wrote:
>>
>>> Hi Graydon,
>>>
>>> Your assumptions were correct: If namespaces are declared in another
>>> module, they will be only valid in the scope of that module, and not
>>> in the importing module.
>>>
>>> If your local element names are unique, and if you prefer short path
>>> expressions, you can always use a wildcard prefix (*:...); but that
>>> answer is actually not part of your question anymore ;)
>>>
>>> Best
>>> Christian
>>>
>>>
>>>
>>> On Fri, Aug 9, 2019 at 9:14 PM Graydon Saunders 
>>> wrote:
>>> >
>>> > Hi --
>>> >
>>> > I'm pretty sure this isn't a thing, but I thought I'd ask.
>>> >
>>> > I have a raft of namespace declarations because I'm pulling
>>> information out of Open Document documents.  I'd like to put all thirty-odd
>>> of these declarations in their own file and import that, but I'm pretty
>>> sure I can't because that imported module would need its own namespace and
>>> this would keep its internal namespace declarations from being in scope for
>>> the main module, where I actually want them declared.
>>> >
>>> > Is there a way to do this?  It's not critical, it's an outbreak of
>>> neatness, but it would be a nice neatness.
>>> >
>>> > Thanks!
>>> > Graydon
>>>
>>


Re: [basex-talk] importing namespace declarations into the main module

2019-08-11 Thread Christian Grün
Hi Graydon,

We could possibly introduce an include statement:

include 'path/to/module.xqm';

In contrast to 'import module', the contents of the addressed file would
simply be inserted as string into the original module. The inserted string
could contain any other declarations that are allowed in the prolog of a
query.

More suggestions are welcome; I would particularly interested if other
users would benefit from such an extension as well?

Christian




Graydon Saunders  schrieb am So., 11. Aug. 2019,
20:07:

> Hi Christian --
>
> Appreciate the confirmation!
>
> Any chance of some syntactic sugar for this in a future BaseX release?
>
> The use case is writing a bunch of distinct queries to pull stuff out of
> complex formats like OOXML or Opendocument; there are many namespaces
> involved, it's important to have them all defined, and it'd be nice to be
> able to abstract groups of definitions for re-use across queries.  So some
> way to specify "get that bunch of definitions in the current context" would
> be nice.  (But, admittedly, by no means necessary.)
>
> Thanks!
> Graydon
>
> On Sun, Aug 11, 2019 at 8:36 AM Christian Grün 
> wrote:
>
>> Hi Graydon,
>>
>> Your assumptions were correct: If namespaces are declared in another
>> module, they will be only valid in the scope of that module, and not
>> in the importing module.
>>
>> If your local element names are unique, and if you prefer short path
>> expressions, you can always use a wildcard prefix (*:...); but that
>> answer is actually not part of your question anymore ;)
>>
>> Best
>> Christian
>>
>>
>>
>> On Fri, Aug 9, 2019 at 9:14 PM Graydon Saunders 
>> wrote:
>> >
>> > Hi --
>> >
>> > I'm pretty sure this isn't a thing, but I thought I'd ask.
>> >
>> > I have a raft of namespace declarations because I'm pulling information
>> out of Open Document documents.  I'd like to put all thirty-odd of these
>> declarations in their own file and import that, but I'm pretty sure I can't
>> because that imported module would need its own namespace and this would
>> keep its internal namespace declarations from being in scope for the main
>> module, where I actually want them declared.
>> >
>> > Is there a way to do this?  It's not critical, it's an outbreak of
>> neatness, but it would be a nice neatness.
>> >
>> > Thanks!
>> > Graydon
>>
>


Re: [basex-talk] importing namespace declarations into the main module

2019-08-11 Thread Graydon Saunders
Hi Christian --

Appreciate the confirmation!

Any chance of some syntactic sugar for this in a future BaseX release?

The use case is writing a bunch of distinct queries to pull stuff out of
complex formats like OOXML or Opendocument; there are many namespaces
involved, it's important to have them all defined, and it'd be nice to be
able to abstract groups of definitions for re-use across queries.  So some
way to specify "get that bunch of definitions in the current context" would
be nice.  (But, admittedly, by no means necessary.)

Thanks!
Graydon

On Sun, Aug 11, 2019 at 8:36 AM Christian Grün 
wrote:

> Hi Graydon,
>
> Your assumptions were correct: If namespaces are declared in another
> module, they will be only valid in the scope of that module, and not
> in the importing module.
>
> If your local element names are unique, and if you prefer short path
> expressions, you can always use a wildcard prefix (*:...); but that
> answer is actually not part of your question anymore ;)
>
> Best
> Christian
>
>
>
> On Fri, Aug 9, 2019 at 9:14 PM Graydon Saunders 
> wrote:
> >
> > Hi --
> >
> > I'm pretty sure this isn't a thing, but I thought I'd ask.
> >
> > I have a raft of namespace declarations because I'm pulling information
> out of Open Document documents.  I'd like to put all thirty-odd of these
> declarations in their own file and import that, but I'm pretty sure I can't
> because that imported module would need its own namespace and this would
> keep its internal namespace declarations from being in scope for the main
> module, where I actually want them declared.
> >
> > Is there a way to do this?  It's not critical, it's an outbreak of
> neatness, but it would be a nice neatness.
> >
> > Thanks!
> > Graydon
>


Re: [basex-talk] importing namespace declarations into the main module

2019-08-11 Thread Christian Grün
Hi Graydon,

Your assumptions were correct: If namespaces are declared in another
module, they will be only valid in the scope of that module, and not
in the importing module.

If your local element names are unique, and if you prefer short path
expressions, you can always use a wildcard prefix (*:...); but that
answer is actually not part of your question anymore ;)

Best
Christian



On Fri, Aug 9, 2019 at 9:14 PM Graydon Saunders  wrote:
>
> Hi --
>
> I'm pretty sure this isn't a thing, but I thought I'd ask.
>
> I have a raft of namespace declarations because I'm pulling information out 
> of Open Document documents.  I'd like to put all thirty-odd of these 
> declarations in their own file and import that, but I'm pretty sure I can't 
> because that imported module would need its own namespace and this would keep 
> its internal namespace declarations from being in scope for the main module, 
> where I actually want them declared.
>
> Is there a way to do this?  It's not critical, it's an outbreak of neatness, 
> but it would be a nice neatness.
>
> Thanks!
> Graydon


[basex-talk] importing namespace declarations into the main module

2019-08-09 Thread Graydon Saunders
Hi --

I'm pretty sure this isn't a thing, but I thought I'd ask.

I have a raft of namespace declarations because I'm pulling information out
of Open Document documents.  I'd like to put all thirty-odd of these
declarations in their own file and import that, but I'm pretty sure I can't
because that imported module would need its own namespace and this would
keep its internal namespace declarations from being in scope for the main
module, where I actually want them declared.

Is there a way to do this?  It's not critical, it's an outbreak of
neatness, but it would be a nice neatness.

Thanks!
Graydon