在来自 UML 模型时在 OWL 本体中搜索属性的命名约定

Searching for a naming convention for properties in an OWL ontology when coming from an UML Model

提问人:Johannes Becker 提问时间:11/8/2023 最后编辑:Johannes Becker 更新时间:11/9/2023 访问量:218

问:

简短版本:当将 UML 模型自动转换为 OWL2 本体时,专门针对 OWL2 中的数据和对象属性的良好命名约定是什么?

背景

我正在维护一个大型标准数据模型,用于汽车线束开发数据的数据交换(参见:https://ecad-wiki.prostep.org/specifications/vec/v202/)。该模型使用具有静态结构的 UML 定义(仅限类图),大约有 500 个类和 1200 个属性。对于数据交换,XML 架构是从 UML 模型自动生成的,这是一个简单的过程。

出于多种原因(例如,XML模式中缺少语义),我们目前正在研究从UML模型中派生OWL2本体(以进一步丰富)。我已经看过几个来源(例如这个问题:将 UML 转换为 OWL 本体)和 Henriette Harmse 的文章“UML Class Diagram to OWL and SROIQ Reference”链接在那里。“结构翻译”不是问题,已经在初稿中完成。

由于模型的范围,转换必须使用一组定义的翻译规则来完成,并且不能手动完成。由于既定的工作程序,UML模型也将是未来静态结构的主控。因此,翻译过程现在和将来必须产生相同的结果。

问题

UML 模型不定义模型中的唯一属性。例如,有三个具有完全不同语义的对象属性,也有一些具有相同语义的属性(例如,有 10 个具有 )。如何命名本体论中的属性?我已经想过的事情,以及我的结论:assignmentabbreviation

  1. 使用模型中的名称。优点:它很短,缺点:有不同的语义,例如声明&,同时导致完全错误的结论。-> 没用rdfs:domainrdfs:range

  2. 自 1.)没有用,我需要模型中每个属性的唯一 URI。如果我得出的结论是,模式中的两个属性实际上是相同(或具有相似的语义)并具有共同的推论,我仍然可以声明它们或 .现在,我想知道如何创建这些独特的 URIS:owl:equivalentPropertyrdfs:subPropertyOf

    • 使用模型中的名称,但添加一个限定符以使其在模棱两可时是唯一的(例如 & ).优点:它很短,可以补偿 1.),但将 UML -> 转换为 OWL 很复杂且不清楚(在转换期间和以后的模型用户)。当当前唯一的属性名称在将来变得不明确时会发生什么情况?-> 没用abbreviationXabrreviationY

    • 不透明的本地名称(例如):对于数据,认为这没问题,但对于本体定义来说,感觉很奇怪。尤其是在开发调试期间创建数据时,这将是一场噩梦。-> 没用p123456

    • 使用类名限定属性。实际上,这也是 UML 中定义的属性的限定名称。例如,但是有多种方法可以实现这一点,因为我是 OWL 的新手,我想知道 OWLish 的方法是什么。DocumentVersion::abbrevation

      • <ClassName><seperator><propertyName>.用什么作为分隔符?然而,这违反了在骆驼式中定义属性名称的约定,开头有一个小写字母(例如,在“工作本体学家的语义网”中提到)。--> 这就是我目前所做的(例如)。DocumentVersion_abbrevation
      • 我还考虑过诸如(例如)之类的事情,但这可能会导致对关系方向的错误隐含假设。或者,但这对我来说有点尴尬。或者这会导致 CURIE 前缀混乱,并在使用 -namespaces 时造成问题。<propertyName><ClassName>abbrevationDocumentVersion<propertyName>Of<ClassName><ClassName>/<propertyName>#

我的直觉告诉我,它必须像最后一点一样,这就是我在原型中所做的。我有多年的建模经验,所以我知道良好的命名是理解模型(和成功)的基础。但是,我在语义 Web 建模方面几乎没有经验,因此非常欢迎任何更深刻的意见!

澄清

为什么要保留这么多独特的属性?简短的回答:将所有具有相同名称的 UML 属性映射到单个 OWL 属性有点像使用属性“播放”的本体,用于在足球队中玩耍的人、玩一组视频游戏的孩子、在电影中玩耍的演员以及在时间段和地点播放的电影。它破坏了微妙的差异,并破坏了得出正确结论的可能性。

在我的上下文中,详细原因:

  1. 如前所述,我必须进行从 UML 到 OWL 的自动、可重复的转换。因此,请根据 UML 模型中可用的信息明确一般规则。没有个人决定。在生成后,可以用额外的公理来丰富生成的本体。
  2. 正如我试图解释的那样,在某些概念中,相同的属性名称可以解决相同的概念(如名称、描述、缩写等)。但是,有些概念并非如此。例如,模型知道三个属性“currentInformation”。两个可以解释为“零件熔化前的最大电流”。但是,它们的定义是不同的。另一个描述了 E/E 组件的正常工作电流。 将这些概念映射到相同的属性名称是错误的(在我看来,但我可能错了)。当前模型没有标准来决定第一种情况和后一种情况。
  3. 我可以从模型中得出什么推论。当每个UML属性都有自己的OWL URI时,我可以定义&断言或。当我将所有具有相同名称的 UML 属性映射到同一个 OWL 属性时,我无法做到这一点。因为这样一来,给某物一个“名称”就会推断出,在UML模型中,所有类都定义了一个“名称”。但是,正确的推论是,它是一个 .不幸的是,UML 目前还不知道。因此,这个想法是将每个UML属性映射到一个唯一的OWL属性,并带有&断言或(正如Henriette Harmse的论文所建议的那样)。之后,我可以用“name”等一般概念丰富本体,并将唯一概念映射到一般概念(例如,with ),并可以对一般概念(如 )进行推论。rdfs:domainrdfs:rangeowl:restrictionsNamedElementNamedElementrdfs:domainrdfs:rangeowl:restrictionsrdf:subpropertyOfNamedElement
  4. 在当前模型中,所有属性都有一个文本定义(适用于定义属性的上下文)。不能保证(在某些情况下极不可能)文本定义彼此 100% 一致。
UML RDF 猫头鹰 本体语 义网

评论

1赞 Jim L. 11/8/2023
为什么要保留这么多独特的属性?例如,一个名称对每个类都具有相同的现实世界含义。
0赞 Johannes Becker 11/8/2023
@JimL。我试图通过在我原来的问题中添加一个部分来详细说明。希望能澄清它。
1赞 Stanislav Kralin 11/9/2023
https://lov.linkeddata.es/dataset/lov/sparql?query=+PREFIX+owl%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2002%2F07%2Fowl%23%3E%0A%0ASELECT+%3Fontology+%3Fproperty+%3FlocalName+%7B%0A+%09GRAPH+%3Fontology+%7B%0A+%09+%09%3Fproperty+a+owl%3AObjectProperty+.%0A+++++++++BIND(replace(str(%3Fproperty)%2C+%22%5E(.*)(%5B%2F%23%5D)(%5B%5E%23%2F%5D*)%24%22%2C+%22%243%22)+AS+%3FlocalName)%0A++++++++++BIND+(substr(%3FlocalName%2C+1%2C+1)+AS+%3FfirstLetter)%0A++++++++++FILTER+(ucase(%3FfirstLetter)+%3D+%3FfirstLetter)%0A+++++%7D%0A%7D+
0赞 Johannes Becker 11/9/2023
@StanislavKralin THX 指出这一点。似乎小写的属性名称更常见(20K 与 4K),并且大多数大写属性都是不透明的名称,例如 .OP_1234
1赞 Henriette Harmse 11/9/2023
我已经启动了一个 uml2owl 转换器,该转换器当前读取制表符分隔文件 UML 类定义以生成 OWL - 如果这对您有用的话。

答:

1赞 Jim L. 11/8/2023 #1

由于您有义务保留所有这些属性并在以后理解它们,因此我建议您遵循 ISO 11179-5 命名和设计规则。例如,如果类 Person 具有姓氏属性,则将其命名为 PersonLastName。 有关更多信息,请参阅维基百科

评论

0赞 Johannes Becker 11/9/2023
感谢您指出 ISO 11179-5。在研究过程中,我还偶然发现了这里提到的 ISO/IS 19150-2,它似乎为特定用例定义了 UML 到 OWL 的映射规则。我想我会采纳您的建议,除了用小驼色大小写命名属性,例如 使它们与类区分开来,遵循 OWL 参考本身中使用的约定。personLastName
2赞 Henriette Harmse 11/9/2023 #2

小写属性名称是标准配置。

不透明的名称在本体中被广泛使用。也就是说,如果你在本体查询服务(OLS)上搜索“部分”属性(免责声明:我负责OLS),你会看到至少有2个不同的“部分”属性:

  1. http://purl.obolibrary.org/obo/BFO_0000050
  2. http://www.bioassayontology.org/bao#BAO_0090002

这是具有相同“部分”标签的 2 个不同属性。在这种情况下,这两个属性来自不同的本体,但在本体中具有相同名称的不同属性是完全可以接受的。这些属性根据其 PURL 进行区分,您可以使用注释使其预期用途更加清晰。

我认为从UML到OWL的最大变化之一是意识到PURL是关键,而不是名称。因此,每个类、每个属性、每个 UML 元素都需要有一个 PURL。而这些 PURL 永远不会改变

依赖命名约定往往是脆弱的。当您在快速发展的领域工作时尤其如此。随着社区对域名的理解发生变化,他们给事物命名的东西也会发生变化。因此,不透明名称允许您更改标签,而无需更新引用该名称的所有数据源。请参阅此 StackOverflow 问题,其中提出了类似的问题。我总是更喜欢不透明的名称 (PURLS),除非我有一个非常稳定的域并且更改名称的可能性极小,但即便如此,我还是更喜欢不透明的名称。

评论

0赞 Johannes Becker 11/9/2023
感谢您的专业知识。我考虑过不透明的 ID(现在仍然如此)。PURL的概念对我来说很熟悉。在这种情况下,我有点不愿意使用不透明的 ID,因为: 1.该模型在过去 15+ 年中不断发展。主要表示形式是基于名称的 XML。这不会随着 rdf/owl 替代品的引入而停止存在。因此,轻松愉快的改名已经不是一种选择。2. 使用 rdf 和 xml 中的名称,表示之间的数据映射和转换更容易。3. 了解社区,我认为不透明的名字会损害接受度。
1赞 Henriette Harmse 11/9/2023
如果更改确实极不可能,则不使用不透明的名称是合理的。名称不透明的主要优点是它可以屏蔽蒸汽系统免受本体变化的影响。下游系统使用 IRI,而不是标签。他们使用 IRI 来获取特定概念的详细信息。当每个概念都有大量的注释和与其他概念的关系时,这是有道理的。如果这不适用于您的用例,那么使用标签就可以了。