Page 87 - 《软件学报》2020年第10期
P. 87
梁冠宇 等:面向操作系统可靠性保障的开源软件供应链 3063
• 地理位置(location):该实体类型描述某一个具体的地理位置,和组织或者人员是一对多的关系,由于任何
一个软件都至少由一个组织或个人维护,进而使得软件包本身带有地理位置的属性,通常情况下,组织或个人需
要遵守当地的法律,而当由于政治等因素导致某个国家通过法律手段,限制某个组织或个人对其所拥有开源软
件的开放等级时,开源软件间现有的供应关系极可能遭到破坏;
• 组织(organization):该实体类型描述某一个具体的组织,可以是开源组织,或者是提供开源软件的公司,它
们对某些开源软件有实际的控制权,因此存在“hasController”的关系.同时,它们“locateAt”某一个具体的地理位
置,需要遵守当地的法律法规;
• 人员(human):该实体类型描述某一个具体的开发或维护人员,它们既可以是以个人名义,亦或者属于
(“hasEmployee”)某一个具体的组织为开源软件做出贡献,因此它们和软件之间存在“hasContributor”的关系.同
时,某个人员可能以个人名义对某个开源软件有实际控制权,因此,它们与软件之间也可能存在“hasController”
的关系.
为了简洁起见,图 3 中仅展示了基本的实体类型和它们之间的关系,省略了每个实体类型所包含的属性,这
一部分内容将在第 4.1 节中给出进一步的描述.
3.2.2 构建过程
构建本文提出的开源软件知识图谱,主要分为两个步骤,如图 4 所示,具体如下.
Fig.4 The data flow diagram for contructing the knowledge graph of open source software
图 4 开源软件知识图谱数据流图
1) 基础图谱构建
这一步骤以现有包管理器(RPM(常用包管理工具,Red Hat、Fedora、openSUSE、CentOS 等主流操作系统
发行版的核心组件)、APT(常用包管理工具,Debian、Ubuntu 等主流操作系统发行版的核心组件)等)作为数据
源,以目标构建的操作系统中提供核心功能的软件包作为“种子”,通过挖掘“种子”软件包的供应链条,即可得到
基本的供应关系图谱,同时为每个软件包实例填充基本的属性信息.需要注意的是,在此过程中,会判断某一软
件实体是否已经存在,若存在,则不会重复添加.该基础图谱仅包含软件包基本信息,如“name”“size”等,而
“features”“maintainers”等属性的信息则无法获取,因此需要通过第 2 步来完善和扩展整个图谱的“知识量”.