任何人都可以解释SWRL规则的目的。据我所知,SWRL规则与SQL中的存储过程相同。我已经制定了一些规则,但不知道如何通过查询在我的应用程序中使用它们。我不知道我是否以正确的方式思考SWRL规则的意图。请告诉我使用它们的正确方法。
看看这条规则:
Patient(?x) ^ hasValue_heartrate(?x, >160) -> Sick(?x)
在我的本体论中,我有患者类,但没有病态的课程和甚至没有hasValue_heartrate属性。我应该创建这些吗? 或者我如何在我的本体论中使用上述规则?
答案 0 :(得分:10)
规则是表达可以从数据集中推断出的其他内容的一种方式。可以从本体模型本身收集一些推论,但其他推论可能无法在本体语言(通常是OWL)中表达,并且需要更多功能表示。您应该注意到SWRL从未成为标准,并且开始不鼓励使用它。请参阅answers.semanticweb.com上的问题latest best support for SWRL
您应该考虑使用SPIN。引用this thread:
现在SPIN是W3C提交,它已达到相同的标准状态 作为SWRL。此外,SPIN对SWRL具有关键优势:
- 它使用SPARQL--每个RDF商店都支持的标准
- 与SWRL不同,SPIN是一项积极的努力。 SWRL已被RIF淘汰,而SPIN则是RIF的补充
RIF是一项正在进行的W3C工作,曾经标准化将弃用SWRL。 SPIN is a W3C Team Submission,名为TopSpin的推理引擎存在within Top Braid Composer。
answers.semanticweb.com社区可能会提供更多帮助。
答案 1 :(得分:3)
SWRL可被视为OWL的延伸。从语义上讲,它在OWL之上很好地分层,通常用于OWL无法表达的语句。从语法上讲,它并没有很好地在OWL之上进行分层,因为它引入了一种全新的语法(例如,显式变量)。但是,有些人更喜欢SWRL的语法和OWL,甚至使用SWRL甚至可以在OWL中成功表达的语句(例如你的例子公理也可以在OWL中表达)。
要理解OWL和SWRL之间的区别,例如
我绝对鼓励你使用SWRL。 ;)
(在引用类之前是否必须明确“创建”或“声明”类可能取决于您的本体编辑器或推理工具。)