Re: [SMW-devel] Maintain order of property values

2020-09-24 Thread Michael Erdmann

Hi Markus,
thanks for the quick response. I was considering both of your options 
already but wanted to make sure that I did not miss any straight forward 
solution. So potential over engineering becomes engineering now ;)


THX,
  michael

On 2020-09-24 13:16, Markus Krötzsch wrote:

Hi Michael,

The data model of SMW never considered "insertion order" as a piece of 
information that should be recorded. In fact, a normal SQL RDBMs like 
MariaDB has no obligation to return tuples in a specific order unless 
there is an ordering clause in the query. Same for SPARQL. Relying on 
result orders to be the same "as in the table" is generally not robust.


To store and retrieve ordered lists in SMW, there are several options:

(1) Use sub-objects instead of plain values and store the index of 
each entry with the value. Then sort by this value when retrieving data.
(2) Store the unordered values as you do now, and in addition store a 
string of the ordered values (comma-separated) in another property. 
You can use page variables to build such a string and #arraymap to 
decompose it (if you want to do more than just display this string).


I have worked with both solutions in practice. For things like lecture 
dates, we use (1) (though we use the date rather than the insertion 
order as an ordering criterion there). For things like author lists 
(where order matters), we use (2).


Best regards,

Markus


On 24/09/2020 12:37, Michael Erdmann wrote:

Dear Community,

is there a way to maintain the order of attribute values, e.g. in ASK 
queries. By "maintain" I mean to keep the order of the values as they 
had been added in the wiki page's annotations.


Currently I get this:

Test_Page contains:

    [[MyProperty::Page1]]
    [[MyProperty::Page2]]
    [[MyProperty::Page3]]

Another_Page contains this query:

    {{#ask: [[Test_Page]] | ?MyProperty | format = ul }}

and shows this result

    Test_Page (MyProperty: Page1, Page2, Page3)

Changing the order in Test_Page to:

    [[MyProperty::Page2]]
    [[MyProperty::Page3]]
    [[MyProperty::Page1]]

still results in exactly the same query result, i.e. Page1 at the 
beginnig of the list.


Is there a way to accomplish what I want in Wiki text?

If there is a way to accomplish this in PHP that is also fine for me. 
I investigated a bit already and found, that


    $data = StoreFactory::getStore()->getSemanticData( $myPage );
    $values = $data->getPropertyValues( $myProperty );

already returns the values in a constant order (page-IDs?). Is the DB 
maybe not prepared to maintain this information?


BTW. I am using MW1.31 and SMW3.0.2.

THX,
   michael


--

Dr. Michael Erdmann |erdm...@diqa-pm.com    | +49 151 6140 1790
DIQA Projektmanagement GmbH | An der RaumFabrik 33c |   76227 Karlsruhe
Handelsregister: Amtsgericht Mannheim HRB 715454 USt-IdNr.: DE283037270
Geschäftsführer: Dr. Michael Erdmann, Dipl.-Wirtsch.-Inf. Daniel Hansch

This email may contain confidential information. If you are not the 
intended recipient please notify the sender immediately and delete 
this email. Any unauthorized copying, disclosure or distribution of 
this email is strictly forbidden.



___
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel





--

Dr. Michael Erdmann | erdm...@diqa-pm.com   | +49 151 6140 1790
DIQA Projektmanagement GmbH | An der RaumFabrik 33c |   76227 Karlsruhe
Handelsregister: Amtsgericht Mannheim HRB 715454 USt-IdNr.: DE283037270
Geschäftsführer: Dr. Michael Erdmann, Dipl.-Wirtsch.-Inf. Daniel Hansch

This email may contain confidential information. If you are not the 
intended recipient please notify the sender immediately and delete this 
email. Any unauthorized copying, disclosure or distribution of this 
email is strictly forbidden.
___
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel


Re: [SMW-devel] Maintain order of property values

2020-09-24 Thread Markus Krötzsch

Hi Michael,

The data model of SMW never considered "insertion order" as a piece of 
information that should be recorded. In fact, a normal SQL RDBMs like 
MariaDB has no obligation to return tuples in a specific order unless 
there is an ordering clause in the query. Same for SPARQL. Relying on 
result orders to be the same "as in the table" is generally not robust.


To store and retrieve ordered lists in SMW, there are several options:

(1) Use sub-objects instead of plain values and store the index of each 
entry with the value. Then sort by this value when retrieving data.
(2) Store the unordered values as you do now, and in addition store a 
string of the ordered values (comma-separated) in another property. You 
can use page variables to build such a string and #arraymap to decompose 
it (if you want to do more than just display this string).


I have worked with both solutions in practice. For things like lecture 
dates, we use (1) (though we use the date rather than the insertion 
order as an ordering criterion there). For things like author lists 
(where order matters), we use (2).


Best regards,

Markus


On 24/09/2020 12:37, Michael Erdmann wrote:

Dear Community,

is there a way to maintain the order of attribute values, e.g. in ASK 
queries. By "maintain" I mean to keep the order of the values as they 
had been added in the wiki page's annotations.


Currently I get this:

Test_Page contains:

[[MyProperty::Page1]]
[[MyProperty::Page2]]
[[MyProperty::Page3]]

Another_Page contains this query:

{{#ask: [[Test_Page]] | ?MyProperty | format = ul }}

and shows this result

Test_Page (MyProperty: Page1, Page2, Page3)

Changing the order in Test_Page to:

[[MyProperty::Page2]]
[[MyProperty::Page3]]
[[MyProperty::Page1]]

still results in exactly the same query result, i.e. Page1 at the 
beginnig of the list.


Is there a way to accomplish what I want in Wiki text?

If there is a way to accomplish this in PHP that is also fine for me. I 
investigated a bit already and found, that


$data = StoreFactory::getStore()->getSemanticData( $myPage );
$values = $data->getPropertyValues( $myProperty );

already returns the values in a constant order (page-IDs?). Is the DB 
maybe not prepared to maintain this information?


BTW. I am using MW1.31 and SMW3.0.2.

THX,
   michael


--

Dr. Michael Erdmann |erdm...@diqa-pm.com| +49 151 6140 1790
DIQA Projektmanagement GmbH | An der RaumFabrik 33c |   76227 Karlsruhe
Handelsregister: Amtsgericht Mannheim HRB 715454 USt-IdNr.: DE283037270
Geschäftsführer: Dr. Michael Erdmann, Dipl.-Wirtsch.-Inf. Daniel Hansch

This email may contain confidential information. If you are not the 
intended recipient please notify the sender immediately and delete this 
email. Any unauthorized copying, disclosure or distribution of this 
email is strictly forbidden.



___
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel





___
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel


[SMW-devel] Maintain order of property values

2020-09-24 Thread Michael Erdmann

Dear Community,

is there a way to maintain the order of attribute values, e.g. in ASK 
queries. By "maintain" I mean to keep the order of the values as they 
had been added in the wiki page's annotations.


Currently I get this:

Test_Page contains:

   [[MyProperty::Page1]]
   [[MyProperty::Page2]]
   [[MyProperty::Page3]]

Another_Page contains this query:

   {{#ask: [[Test_Page]] | ?MyProperty | format = ul }}

and shows this result

   Test_Page (MyProperty: Page1, Page2, Page3)

Changing the order in Test_Page to:

   [[MyProperty::Page2]]
   [[MyProperty::Page3]]
   [[MyProperty::Page1]]

still results in exactly the same query result, i.e. Page1 at the 
beginnig of the list.


Is there a way to accomplish what I want in Wiki text?

If there is a way to accomplish this in PHP that is also fine for me. I 
investigated a bit already and found, that


   $data = StoreFactory::getStore()->getSemanticData( $myPage );
   $values = $data->getPropertyValues( $myProperty );

already returns the values in a constant order (page-IDs?). Is the DB 
maybe not prepared to maintain this information?


BTW. I am using MW1.31 and SMW3.0.2.

THX,
  michael


--

Dr. Michael Erdmann | erdm...@diqa-pm.com   | +49 151 6140 1790
DIQA Projektmanagement GmbH | An der RaumFabrik 33c |   76227 Karlsruhe
Handelsregister: Amtsgericht Mannheim HRB 715454 USt-IdNr.: DE283037270
Geschäftsführer: Dr. Michael Erdmann, Dipl.-Wirtsch.-Inf. Daniel Hansch

This email may contain confidential information. If you are not the 
intended recipient please notify the sender immediately and delete this 
email. Any unauthorized copying, disclosure or distribution of this 
email is strictly forbidden.
___
Semediawiki-devel mailing list
Semediawiki-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/semediawiki-devel