RDFOWL中的字符串 *** 作

RDFOWL中的字符串 *** 作,第1张

概述关于语义网的初学者问题. 我有一个颜色的知识库,包括相似的颜色,颜色修饰符(暗,光,〜是等),颜色关系(更暗,更亮),颜色同义词等.我试图弄清楚RDF / OWL是否是 *** 作(主要是查询)此KB的好选择.以下是我需要支持的查询. 1)找到与给定颜色相似的所有颜色.如果我用“类似”谓词表示颜色相似性,那么简单的Sparql查询就可以了.同义词和关系也是如此.好. 2)当我需要查找令牌或短语x是否是有效 关于语义网的初学者问题.

我有一个颜色的知识库,包括相似的颜色,颜色修饰符(暗,光,〜是等),颜色关系(更暗,更亮),颜色同义词等.我试图弄清楚RDF / OWL是否是 *** 作(主要是查询)此KB的好选择.以下是我需要支持的查询.

1)找到与给定颜色相似的所有颜色.如果我用“类似”谓词表示颜色相似性,那么简单的Sparql查询就可以了.同义词和关系也是如此.好.

2)当我需要查找令牌或短语x是否是有效颜色时,问题变得更加棘手.如果x是未修改的颜色,则可以通过创建color类并确保所有已知颜色都是该类的实例来解决问题.但是如果x是一种像“红色”的修饰颜色呢?显然,一种解决方案是通过明确地添加它们来使所有修改后的颜色成为KB的一部分.

但是,是否可以自动将所有修改后的颜色添加到RDF?换句话说,是否可以定义一类需要所有修改颜色的修改颜色?这需要一些连接运算符.那可能吗?

另一个解决方案是有一些逻辑来分解x并检查a)它是否包含已知的修饰符和b)如果修改的东西是有效的颜色.当然,我也希望在RDF / OWL中描述这个逻辑.任何的想法?

提前感谢任何意见或建议.

解决方法 您想要做的事情似乎更好地处理,IMO,用您喜欢的编程语言的自定义代码片段.很难在OWL中表达这类事物,当然也没有效率.

但是FWIW,这是你可以做的事情.系好安全带,开始前往高级OWL 2造型.假设你有基本颜色“蓝色”,“绿色”,“红色”.您可以定义包含三个字符串的数据类型(我使用Turtle语法):

:basecolor  a  rdfs:Datatype;    owl:equivalentClass  [        a  rdfs:Datatype;        owl:withRestrictions ( [ xsd:pattern "blue|green|red" ] )    ] .

然后你可以定义修改后的颜色:

:modcolor  a  rdfs:Datatype;    owl:equivalentClass  [        a  rdfs:Datatype;        owl:withRestrictions (            [ xsd:pattern "(dark|light)?(blue|green|red)(ish)?" ]        )    ] .

您甚至可以拥有更多数据类型,例如:lightcolor,:darkcolor,mediumcolor.

然后你创建一个类:具有数据类型属性的颜色:hascolor:

:hascolor  a  owl:DatatypeProperty;    rdfs:domain  :color;    rdfs:range  [        a  rdfs:Dataype;        owl:unionOf  ( :basecolor :modcolor )    ]:color  a  owl:Class;    rdfs:subClassOf  [       a  owl:Restriction;       owl:onProperty  :hascolor;       owl:someValuesFrom  xsd:string    ];    owl:hasKey  ( :hascolor ) .

在这里,我强加了以下实例:color至少有一个颜色字符串,我强制颜色字符串是颜色的唯一标识符(它是一个键).因此,每当我使用其颜色字符串给出颜色时,我就可以验证字符串是否在上面给出的正则表达式模式中.假设我定义了数据类型:darkcolor,:lightcolor和:mediumcolor,我还可以表达:darker和:light关系:

:Darkcolor  a  owl:Class;    rdfs:subClassOf  :color,[        a  owl:Restriction;        owl:onProperty  :hascolor;        owl:allValuesFrom  :darkcolor    ] .:lightcolor  a  owl:Class;    rdfs:subClassOf  :color,[        a  owl:Restriction;        owl:onProperty  :hascolor;        owl:allValuesFrom  :lightcolor    ] .:Mediumcolor  a  owl:Class;    rdfs:subClassOf  :color,[        a  owl:Restriction;        owl:onProperty  :hascolor;        owl:allValuesFrom  :mediumcolor    ] .

然后你要说全部:Darkcolors:比所有颜色更暗:Mediumcolor和all:lightcolor.这种公理并非易于实现,因为它要求引入辅助术语.它在文章All Elephants are Bigger than All Mice中进行了解释,并在DL术语中称为概念产品:

:p1  a  owl:ObjectProperty . # auxiliary property (do not reuse elsewhere):p2  a  owl:ObjectProperty . # IDem:x  a  owl:Thing .           # auxiliary indivIDual:darker  owl:propertyChainAxiom ( :p1 :p2 ) .:Darkcolor  rdfs:subClassOf  [    a  owl:Restriction;    owl:onProperty  :p1;    owl:hasValue  :x] .[ owl:unionOf ( :lightcolor :Mediumcolor ) ] rdfs:SubClassOf  [    a  owl:Restriction;    owl:onProperty  [ owl:inverSEOf :p2 ];    owl:hasValue  :x] .

做同样的事情:打火机.

您无法自动引入修改后的颜色.你真的必须提供一个包含修饰符所有基色的模式.但这可以通过编程方式轻松完成.在任何情况下,我都不应该使用我提供的OWL代码,因为它可以通过自定义程序更好/更有效地解决.

总结

以上是内存溢出为你收集整理的RDF / OWL中的字符串 *** 作全部内容,希望文章能够帮你解决RDF / OWL中的字符串 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1064144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存