我正在查看类图并创建 RDF/XML 格式的实例。例如,假设您对银行系统进行建模。该系统有一个帐户类并具有
<<Compound>>
构造型。该类具有 owner
、balance
、account_Number
作为其属性。还有一个类,银行类。
如果银行类有一个帐户:帐户 [0..1] 作为属性,那么它意味着什么?它如何将其表示为实例?
这是我的猜测。但这显然不符合 RDF 标准。
<cim:Bank rdf:ID="495151912155">
<cim:Bank.account>
<owner>Bill</owner>
<balance>9,005,000</balance>
<account_Number>20-021-154-3214</account_Number>
</cim:Bank.account>
</cim:Bank>
如何翻译 UML 类图很大程度上取决于您这样做的动机。也就是说,我已经完成了将 UML 类图转换为 OWL/RDF 的工作,以便能够对其进行推理并确定不一致之处。在这种情况下,为了表示属性,需要使用 OWL。我已经在here写过有关此内容的文章,您可以在here找到 UML 到 OWL 的参考,并且我正在开发 UML 到 OWL 的转换器。
通常,在翻译用于语义 Web 技术的 UML 类图时,构造型会被忽略,并且所有与实现相关的问题(例如接口),我已经在here写过。
您的示例可以使用 Turtle 语法表示如下。作为示例数据,我假设您有一家名为
bankABC
的银行。一家银行可以拥有多个账户。示例账户为 account123
,所有者为 John Smith
,余额为 300000
,帐号为 123
。
@prefix : <http://www.semanticweb.org/henriette007/ontologies/2024/2/untitled-ontology-1087/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://www.semanticweb.org/henriette007/ontologies/2024/2/untitled-ontology-1087/> .
<http://henrietteharmse.com/uml/bankexample.owl> rdf:type owl:Ontology ;
owl:versionIRI <http://henrietteharmse.com/uml/v0.0.1/bankexample.owl> .
#################################################################
# Object Properties
#################################################################
### http://henrietteharmse.com/uml/bankexample.owl#account
:account rdf:type owl:ObjectProperty ;
rdfs:range :Account .
#################################################################
# Data properties
#################################################################
### http://henrietteharmse.com/uml/bankexample.owl#accountNumber
:accountNumber rdf:type owl:DatatypeProperty ;
rdfs:range xsd:string .
### http://henrietteharmse.com/uml/bankexample.owl#balance
:balance rdf:type owl:DatatypeProperty ;
rdfs:range xsd:integer .
### http://henrietteharmse.com/uml/bankexample.owl#owner
:owner rdf:type owl:DatatypeProperty ;
rdfs:range xsd:string .
#################################################################
# Classes
#################################################################
### http://henrietteharmse.com/uml/bankexample.owl#Account
:Account rdf:type owl:Class ;
rdfs:subClassOf [ rdf:type owl:Restriction ;
owl:onProperty :accountNumber ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange owl:rational
] ,
[ rdf:type owl:Restriction ;
owl:onProperty :balance ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange owl:rational
] ,
[ rdf:type owl:Restriction ;
owl:onProperty :owner ;
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
owl:onDataRange owl:rational
] .
### http://henrietteharmse.com/uml/bankexample.owl#Bank
:Bank rdf:type owl:Class ;
rdfs:subClassOf [ rdf:type owl:Restriction ;
owl:onProperty :account ;
owl:someValuesFrom :Account
] .
#################################################################
# Individuals
#################################################################
### http://henrietteharmse.com/uml/bankexample.owl#account123
:account123 rdf:type owl:NamedIndividual ;
:accountNumber 123 ;
:balance 300000 ;
:owner "John Smith" .
### http://henrietteharmse.com/uml/bankexample.owl#bankABC
:bankABC rdf:type owl:NamedIndividual ;
:account :account123 .
言归正传:
«compound»
既不是 UML 定义的构造型也不是关键字。所以它必须属于特定的配置文件。您需要询问模型作者使用了哪个配置文件,根据答案您可能会了解其含义。