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 步来完善和扩展整个图谱的“知识量”.
   82   83   84   85   86   87   88   89   90   91   92