我有一个颜色的知识库,包括相似的颜色,颜色修饰符(暗,光,〜是等),颜色关系(更暗,更亮),颜色同义词等.我试图弄清楚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中的字符串 *** 作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)