- From: Patrick Hochstenbach <Patrick.Hochstenbach@UGent.be>
- Date: Sat, 23 Jul 2022 04:50:08 +0000
- To: Jos De Roo <josderoo@gmail.com>, William Van Woensel <william.vanwoensel@gmail.com>
- CC: "public-n3-dev@w3.org" <public-n3-dev@w3.org>
- Message-ID: <DB4PR09MB5943147A1C62CE3ACC319E2EEE939@DB4PR09MB5943.eurprd09.prod.outlook.com>
Sweeet! As bonus with both examples I also got more insights how lists work internally 🙂
________________________________
From: Jos De Roo <josderoo@gmail.com>
Sent: 22 July 2022 21:09
To: William Van Woensel <william.vanwoensel@gmail.com>
Cc: Patrick Hochstenbach <Patrick.Hochstenbach@UGent.be>; public-n3-dev@w3.org <public-n3-dev@w3.org>
Subject: Re: Example how to count in N3
Exactly!
Another way that would also work with Cwm is
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=aQ1tsMf5nEX5flkhSaYOULxUQB6nx1wd6WJrJ7is%2Fzo%3D&reserved=0>>.
@prefix math: <http://www.w3.org/2000/10/swap/math#<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2000%2F10%2Fswap%2Fmath%23&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=9XpBhlHpdvUdyKQ7J64Khqc98bY0IuDs6TqcT3TYh4Y%3D&reserved=0>>.
@prefix : <http://example.org/ns#<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fexample.org%2Fns%23&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Ro4Wzt%2FQNXaPeCki67WOWTmcayYJqyrfkNXT9NeNPxw%3D&reserved=0>>.
:Collection :parts (:part1 :part2 :part3).
{
?subject :parts ?parts.
?parts rdf:first ?part.
?parts rdf:rest ?rest.
?rest math:memberCount ?count.
}
=>
{
?part :order ?count .
?x :parts ?rest .
}.
giving
$ cwm /tmp/count.n3 --think --data
#Processed by Id
# using base file:///tmp/count.n3
@prefix : <http://example.org/ns#<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fexample.org%2Fns%23&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Ro4Wzt%2FQNXaPeCki67WOWTmcayYJqyrfkNXT9NeNPxw%3D&reserved=0>> .
:Collection :parts (
:part1
:part2
:part3 ) .
:part1 :order 2 .
:part2 :order 1 .
:part3 :order 0 .
Jos
-- https://josd.github.io<https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjosd.github.io%2F&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Tp53zPD2R%2B%2FN3MUwLX3ng19yiOxOj0sNWJ2rDuQI%2BjU%3D&reserved=0>
On Fri, Jul 22, 2022 at 8:54 PM William Van Woensel <william.vanwoensel@gmail.com<mailto:william.vanwoensel@gmail.com>> wrote:
Hi Patrick
Try list:iterate<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Feulersharp.sourceforge.net%2F2003%2F03swap%2Feye-builtins.html&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Awv%2B58kc%2BsaftLB0hGwpS40jrCqgvwMPeQNV20iU0zM%3D&reserved=0>. See http://ppr.cs.dal.ca:3002/n3/editor/s/2rJmxYti<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fppr.cs.dal.ca%3A3002%2Fn3%2Feditor%2Fs%2F2rJmxYti&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=xX8%2BaNTVe4yV%2F3gYFp1cyZx3fzSZ297WtBkrapqpJkQ%3D&reserved=0> for an example.
(This is a new builtin introduced by the community group and supported by eye and jen3.)
W
On Jul 22, 2022, at 9:49 AM, Patrick Hochstenbach <Patrick.Hochstenbach@ugent.be<mailto:Patrick.Hochstenbach@ugent.be>> wrote:
Hi all,
I need a way to count things using N3 but I don't know yet how this could be done.
E.g. as data input I have:
:Collection :parts (:part1 :part2 :part3 ...).
As output I would like to get
:part1 :order 1 .
:part2 :order 2.
:part3 :order 3.
...
I know I can loop over a list using the list:member:
@prefix list: <http://www.w3.org/2000/10/swap/list#<https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2000%2F10%2Fswap%2Flist%23&data=05%7C01%7CPatrick.Hochstenbach%40ugent.be%7C3feda747fd9f4468a6c608da6c15b739%7Cd7811cdeecef496c8f91a1786241b99c%7C1%7C0%7C637941137759280214%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=0uMBXd3SL%2Fa9aM8Jhc9OgB5WOFfSwFcyHcIIR8fS%2BMM%3D&reserved=0>>.
{
?subject :parts ?parts .
?parts list:member ?part .
}
=>
{
?part :order 1 .
}.
But I fail to find a way to add a counter for order. Any hints available?
BR
Patrick
Received on Saturday, 23 July 2022 04:50:24 UTC