Rdf n3推断将str:contains应用于EulerSharp中的xsd:string

Rdf n3推断将str:contains应用于EulerSharp中的xsd:string,rdf,semantic-web,inference,n3,eulersharp,Rdf,Semantic Web,Inference,N3,Eulersharp,我有一个数据集,其中包含我需要的大量资源 根据各种现有数据进行核对。最直截了当的 方法是在不同的字符串之间进行一些简单的字符串比较 文字 不幸的是,文本类型是xsd:string,而EulerSharp是内置的 str:contains无法处理类型化文字 我已经阅读了在eulersharp内置和 我最接近的方法是尝试将xsd:string转换为 使用rdf的明文:来自RIF的明文谓词;然而, 欧拉夏普似乎不支持这一点 如何操作和比较xsd:string类型的文本 或者,我应该对数据进行预处理以去

我有一个数据集,其中包含我需要的大量资源 根据各种现有数据进行核对。最直截了当的 方法是在不同的字符串之间进行一些简单的字符串比较 文字

不幸的是,文本类型是xsd:string,而EulerSharp是内置的 str:contains无法处理类型化文字

我已经阅读了在eulersharp内置和 我最接近的方法是尝试将xsd:string转换为 使用rdf的明文:来自RIF的明文谓词;然而, 欧拉夏普似乎不支持这一点

如何操作和比较xsd:string类型的文本

或者,我应该对数据进行预处理以去除数据类型吗

以下.n3文件演示了该问题:

@prefix : <http://local#> .

@prefix str: <http://www.w3.org/2000/10/swap/string#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:Bob :name "Bob Smith" .
:Rob :name "Rob Smith"^^xsd:string .

{ ?P :name ?N .
  ?N str:contains "Smith" } => { ?P :bingo ?N } .
@前缀:。
@前缀str:。
@前缀xsd:。
@前缀rdf:。
:鲍勃:姓名“鲍勃·史密斯”。
:Rob:name“Rob Smith”^^xsd:string。
{P:name?N。
N str:包含“Smith”}=>{P:bingo?N}。
以及运行上述文件的结果:

$ eye --swipl test.n3 --pass --nope
Id: euler.yap 5974 2013-02-12 00:29:00Z josd
SWI-Prolog 5.10.4 (amd64): Dec 27 2011, 08:54:16
starting 80 [msec cputime] 78 [msec walltime]
GET file:///home/ubuntu/src/test/test.n3 SC=4
networking 0 [msec cputime] 2 [msec walltime]
#Processed by Id: euler.yap 5974 2013-02-12 00:29:00Z josd
#eye --swipl test.n3 --pass --nope

@prefix : <http://local#>.
@prefix str: <http://www.w3.org/2000/10/swap/string#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix var: <http://localhost/var#>.
@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>.
@prefix r: <http://www.w3.org/2000/10/swap/reason#>.
@prefix n3: <http://www.w3.org/2004/06/rei#>.

:Bob :name "Bob Smith".
:Rob :name "Rob Smith"^^xsd:string.
:Bob :bingo "Bob Smith".

TC=4 TP=8 BC=0 BP=5 PM=0 CM=0 FM=0 AM=0
reasoning 0 [msec cputime] 4 [msec walltime]

#ENDS 0 [msec] TC=4 TP=8 BC=0 BP=5 PM=0 CM=0 FM=0 AM=0
$eye--swipl test.n3--pass--nope
Id:euler.yap 5974 2013-02-12 00:29:00Z josd
SWI序言5.10.4(amd64):2011年12月27日,08:54:16
开始80[msec cputime]78[msec walltime]
得到file:///home/ubuntu/src/test/test.n3 SC=4
网络0[msec cputime]2[msec walltime]
#处理人Id:euler.yap 5974 2013-02-12 00:29:00Z josd
#eye--swipl test.n3--通过--否
@前缀:。
@前缀str:。
@前缀xsd:。
@前缀rdf:。
@前缀变量:。
@前缀e:。
@前缀r:。
@前缀n3:。
:鲍勃:姓名“鲍勃·史密斯”。
:Rob:name“Rob Smith”^^xsd:string。
:鲍勃:宾果“鲍勃·史密斯”。
TC=4 TP=8 BC=0 BP=5 PM=0 CM=0 FM=0 AM=0
推理0[msec cputime]4[msec walltime]
#结束0[毫秒]TC=4 TP=8 BC=0 BP=5 PM=0 CM=0 FM=0 AM=0

我在EULERSARP列表上询问,并收到以下回复:

您可以通过log:dtlit从数据类型的文本中获取文本

额外的规则会使它起作用

不是说用?dt代替?dt,还可以使用xsd:string

@prefix : <http://local#> .

@prefix str: <http://www.w3.org/2000/10/swap/string#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#>.


:Bob :name "Bob Smith" .
:Rob :name "Rob Smith"^^xsd:string .

{ ?P :name ?N .
  ?N str:contains "Smith" } => { ?P :bingo ?N } .

{ ?P :name ?N .
  (?lit ?dt) log:dtlit ?N.
  ?lit str:contains "Smith" } => { ?P :bingo ?N } .
@前缀:。
@前缀str:。
@前缀xsd:。
@前缀rdf:。
@前缀日志:。
:鲍勃:姓名“鲍勃·史密斯”。
:Rob:name“Rob Smith”^^xsd:string。
{P:name?N。
N str:包含“Smith”}=>{P:bingo?N}。
{P:name?N。
(?lit?dt)日志:dtlit?N。
?lit str:contains“Smith”}=>{?P:bingo?N}。
运行此命令可获得所需的结果:

$ eye --swipl test.n3 --pass --nope
Id: euler.yap 5974 2013-02-12 00:29:00Z josd
SWI-Prolog 5.10.4 (amd64): Dec 27 2011, 08:54:16
starting 50 [msec cputime] 62 [msec walltime]
#Processed by Id: euler.yap 5974 2013-02-12 00:29:00Z josd
#eye --swipl test.n3 --pass --nope

GET file:///home/ubuntu/src/test/test.n3 SC=4
networking 10 [msec cputime] 2 [msec walltime]
@prefix : <http://local#>.
@prefix str: <http://www.w3.org/2000/10/swap/string#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix var: <http://localhost/var#>.
@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>.
@prefix r: <http://www.w3.org/2000/10/swap/reason#>.
@prefix n3: <http://www.w3.org/2004/06/rei#>.

:Bob :name "Bob Smith".
:Rob :name "Rob Smith"^^xsd:string.
:Bob :bingo "Bob Smith".
:Rob :bingo "Rob Smith"^^xsd:string.

#ENDS 0 [msec] TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0

TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0
reasoning 0 [msec cputime] 2 [msec walltime]
$eye--swipl test.n3--pass--nope
Id:euler.yap 5974 2013-02-12 00:29:00Z josd
SWI序言5.10.4(amd64):2011年12月27日,08:54:16
启动50[msec cputime]62[msec walltime]
#处理人Id:euler.yap 5974 2013-02-12 00:29:00Z josd
#eye--swipl test.n3--通过--否
得到file:///home/ubuntu/src/test/test.n3 SC=4
联网10[msec cputime]2[msec walltime]
@前缀:。
@前缀str:。
@前缀xsd:。
@前缀rdf:。
@前缀日志:。
@前缀变量:。
@前缀e:。
@前缀r:。
@前缀n3:。
:鲍勃:姓名“鲍勃·史密斯”。
:Rob:name“Rob Smith”^^xsd:string。
:鲍勃:宾果“鲍勃·史密斯”。
:Rob:bingo“Rob Smith”^^xsd:string。
#结束0[毫秒]TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0
TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0
推理0[msec cputime]2[msec walltime]

我在EULERSARP列表上询问,并收到以下回复:

您可以通过log:dtlit从数据类型的文本中获取文本

额外的规则会使它起作用

不是说用?dt代替?dt,还可以使用xsd:string

@prefix : <http://local#> .

@prefix str: <http://www.w3.org/2000/10/swap/string#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#>.


:Bob :name "Bob Smith" .
:Rob :name "Rob Smith"^^xsd:string .

{ ?P :name ?N .
  ?N str:contains "Smith" } => { ?P :bingo ?N } .

{ ?P :name ?N .
  (?lit ?dt) log:dtlit ?N.
  ?lit str:contains "Smith" } => { ?P :bingo ?N } .
@前缀:。
@前缀str:。
@前缀xsd:。
@前缀rdf:。
@前缀日志:。
:鲍勃:姓名“鲍勃·史密斯”。
:Rob:name“Rob Smith”^^xsd:string。
{P:name?N。
N str:包含“Smith”}=>{P:bingo?N}。
{P:name?N。
(?lit?dt)日志:dtlit?N。
?lit str:contains“Smith”}=>{?P:bingo?N}。
运行此命令可获得所需的结果:

$ eye --swipl test.n3 --pass --nope
Id: euler.yap 5974 2013-02-12 00:29:00Z josd
SWI-Prolog 5.10.4 (amd64): Dec 27 2011, 08:54:16
starting 50 [msec cputime] 62 [msec walltime]
#Processed by Id: euler.yap 5974 2013-02-12 00:29:00Z josd
#eye --swipl test.n3 --pass --nope

GET file:///home/ubuntu/src/test/test.n3 SC=4
networking 10 [msec cputime] 2 [msec walltime]
@prefix : <http://local#>.
@prefix str: <http://www.w3.org/2000/10/swap/string#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix var: <http://localhost/var#>.
@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>.
@prefix r: <http://www.w3.org/2000/10/swap/reason#>.
@prefix n3: <http://www.w3.org/2004/06/rei#>.

:Bob :name "Bob Smith".
:Rob :name "Rob Smith"^^xsd:string.
:Bob :bingo "Bob Smith".
:Rob :bingo "Rob Smith"^^xsd:string.

#ENDS 0 [msec] TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0

TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0
reasoning 0 [msec cputime] 2 [msec walltime]
$eye--swipl test.n3--pass--nope
Id:euler.yap 5974 2013-02-12 00:29:00Z josd
SWI序言5.10.4(amd64):2011年12月27日,08:54:16
启动50[msec cputime]62[msec walltime]
#处理人Id:euler.yap 5974 2013-02-12 00:29:00Z josd
#eye--swipl test.n3--通过--否
得到file:///home/ubuntu/src/test/test.n3 SC=4
联网10[msec cputime]2[msec walltime]
@前缀:。
@前缀str:。
@前缀xsd:。
@前缀rdf:。
@前缀日志:。
@前缀变量:。
@前缀e:。
@前缀r:。
@前缀n3:。
:鲍勃:姓名“鲍勃·史密斯”。
:Rob:name“Rob Smith”^^xsd:string。
:鲍勃:宾果“鲍勃·史密斯”。
:Rob:bingo“Rob Smith”^^xsd:string。
#结束0[毫秒]TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0
TC=6 TP=12 BC=0 BP=7 PM=0 CM=0 FM=0 AM=0
推理0[msec cputime]2[msec walltime]