- From: Ralph R. Swick <swick@csail.mit.edu>
- Date: Thu, 06 Jul 2006 12:02:42 -0400
- To: public-cwm-talk@w3.org
Scenario: use log:outputString to display some properties of the
members of an rdf:Seq container, in order.
Challenge: Yosi came up with the four statements in the rule below
that successfully produce a sort key from the rdf:_n properties.
Is there a shorter way?
(The "properties of the members" in this test data are trivial;
this is greatly simplified from a real case where the members
are nodes with multiple properties and the rule extracts some
of those properties for display.)
% cat memberorder.n3
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix str: <http://www.w3.org/2000/10/swap/string#> .
[ a rdf:Seq;
rdf:_1 "one\n";
rdf:_2 "two\n";
rdf:_3 "three\n";
rdf:_4 "four\n";
rdf:_5 "five\n";
rdf:_6 "six\n";
rdf:_7 "seven\n";
rdf:_8 "eight\n";
rdf:_9 "nine\n";
rdf:_10 "ten\n";
rdf:_11 "eleven\n";
rdf:_12 "twelve\n";
rdf:_13 "thirteen\n";
] .
rdf:_1 a rdfs:ContainerMembershipProperty .
rdf:_2 a rdfs:ContainerMembershipProperty .
rdf:_3 a rdfs:ContainerMembershipProperty .
rdf:_4 a rdfs:ContainerMembershipProperty .
rdf:_5 a rdfs:ContainerMembershipProperty .
rdf:_6 a rdfs:ContainerMembershipProperty .
rdf:_7 a rdfs:ContainerMembershipProperty .
rdf:_8 a rdfs:ContainerMembershipProperty .
rdf:_9 a rdfs:ContainerMembershipProperty .
rdf:_10 a rdfs:ContainerMembershipProperty .
rdf:_11 a rdfs:ContainerMembershipProperty .
rdf:_12 a rdfs:ContainerMembershipProperty .
rdf:_13 a rdfs:ContainerMembershipProperty .
{
?s ?p ?v .
?p a rdfs:ContainerMembershipProperty .
# the next four statements construct a key ?k that will sort
# the same way numerically and lexographically. Thanks
# to Yosi Scharf for assistance working this out.
?p log:uri ?u.
(?u ".*?([0-9]*)$") str:scrape ?li .
(?li xsd:integer) log:dtlit ?n .
("%020i" ?n) str:format ?k .
}
log:implies
{
?k log:outputString ?v .
}.
% cwm memberorder.n3 --rules -strings
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
%
Received on Thursday, 6 July 2006 16:03:25 UTC