- From: Jos De Roo <josderoo@gmail.com>
- Date: Sun, 5 Sep 2021 02:08:39 +0200
- To: "Shaw, Ryan" <ryanshaw@unc.edu>
- Cc: "public-n3-dev@w3.org" <public-n3-dev@w3.org>
- Message-ID: <CAJbsTZejdeNMzEcXMBh-L=LNe4Y19su99AMpwDbvidjmpN+YsA@mail.gmail.com>
You could try
$ cat /tmp/test.n3
@prefix string: <http://www.w3.org/2000/10/swap/string#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix ex: <https://example.org/> .
ex:a ex:date "2021-09" .
{
?x ex:date ?d.
(?d "^\\d{4}-(\\d{2})$") string:scrape ?m.
(?m xsd:gMonth) log:dtlit ?y.
} => {
?x ex:month ?y
}.
$ cwm /tmp/test.n3 --think
#Processed by Id
# using base file:///tmp/test.n3
@prefix : <#> .
@prefix ex: <https://example.org/> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix string: <http://www.w3.org/2000/10/swap/string#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@forAll :d,
:m,
:x,
:y .
ex:a ex:date "2021-09";
ex:month "09"^^xsd:gMonth .
{
( :d
"^\\d{4}-(\\d{2})$" )
string:scrape :m .
( :m
xsd:gMonth )
log:dtlit :y .
:x ex:date :d .
} => {:x ex:month :y .
} .
$ eye --nope /tmp/test.n3 --pass
eye --nope /tmp/test.n3 --pass
EYE v21.0902.2237 josd
SWI-Prolog version 8.3.29-5-g637e91ade
starting 31 [msec cputime] 29 [msec walltime]
#Processed by EYE v21.0902.2237 josd
#eye --nope /tmp/test.n3 --pass
GET file:///tmp/test.n3 SC=2
networking 2 [msec cputime] 2 [msec walltime]
PREFIX string: <http://www.w3.org/2000/10/swap/string#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX ex: <https://example.org/>
ex:a ex:date "2021-09".
ex:a ex:month "09"^^xsd:gMonth.
reasoning 1 [msec cputime] 0 [msec walltime]
#2021-09-05T00:07:17.134Z in=2 out=2 ent=1 step=2 brake=2 inf=19393
sec=0.034 inf/sec=570382
#ENDS
2021-09-05T00:07:17.134Z in=2 out=2 ent=1 step=2 brake=2 inf=19393
sec=0.034 inf/sec=570382
-- https://josd.github.io
On Sun, Sep 5, 2021 at 1:25 AM Shaw, Ryan <ryanshaw@unc.edu> wrote:
> Suppose I have the following:
>
> ```
> @prefix string: <http://www.w3.org/2000/10/swap/string#> .
> @prefix ex: <https://example.org/> .
>
> ex:a ex:date "2021-09" .
>
> {
> ?x ex:date ?d
> . (?d "^\\d{4}-(\\d{2})$") string:scrape ?m
> } => {
> ?x ex:month ?m
> }
> .
> ```
>
> Running this through a reasoner gives me:
>
> ```
> @prefix ex: <https://example.org/> .
>
> ex:a ex:month "09" .
>
> ```
>
> But supposed instead I wanted:
>
> ```
> @prefix ex: <https://example.org/> .
>
> ex:a ex:month 9 .
>
> ```
>
> or:
>
> ```
> @prefix ex: <https://example.org/> .
> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
>
> ex:a ex:month “--09”^^xsd:gMonth .
>
> ```
>
> Is this possible?
>
> Specifically, are there builtins or other mechanisms for casting a string
> to another datatype?
>
>
>
>
Received on Sunday, 5 September 2021 00:10:03 UTC