Page 253 - 《软件学报》2020年第9期
P. 253
2874 Journal of Software 软件学报 Vol.31, No.9, September 2020
Table 5 Conventions followed by the definitions of the data security and privacy protection model
表 5 数据安全和隐私保护模型定义遵循的约定
遵循约定 说明
在本应用场景中,将个体的年龄、患病情况、残疾情况、损伤情况、经济条件等识别为个体的敏感和隐私数据,
约定 8
为实现对这些数据的访问控制,将个体与这些数据间的关系实例(即三元组)识别为被保护对象,即访问客体.
约定 9 为在访问控制策略规则中引用这些三元组,采用 RDF 具体化的方法将这些三元组具体化为陈述对象.
基于本体模型建立授权和许可访问控制原语,使用 SWRL 作为访问控制策略规范,
约定 10
基于领域安全专家、信息拥有者或信息来源者的访问控制需求建立授权和许可规则.
最终形成的领域语义知识库 SKB healthcare 定义如下:
SKB healthcare =(OB healthcare ,IB healthcare ,F healthcare ,O access_control ,F access_control ).
3.4 案例实现
Protégé 和 Jena 都提供了对本体标准描述语言很好的支持,应用中的本体视图采用 Protégé 4.3 进行构建,
将每个本体和实例数据分别存储到不同的文件中,并以 Turtle 语法格式进行表示,文件扩展名为.ttl.
原型系统基于 Jena 2.12.0 语义 Web 编程框架实现,使用 Jena 提供的命令行工具 tdbloader 将领域本体库和
实例库加载到名为 healthcare 的 TDB [41] 存储中,TDB 版本为 TDB 1.1.0.
Jena TDB 是一个高性能的 RDF 专用存储.
使用 Jena 通用规则引擎 [42] 提供的规则语法格式来描述领域规则集,并存储到扩展名为.rules 的规则文件
中,运动处方推荐模型包含 51 条规则,部分规则如下.
@prefix medicine:〈http://www.neusoft.com/ontologies/2017/6/medicine.owl#〉.
@prefix location:〈http://www.neusoft.com/ontologies/2017/6/location.owl#〉.
@prefix measurement_unit:〈http://www.neusoft.com/ontologies/2017/6/measurement_unit.owl#〉.
@prefix exercise:〈http://www.neusoft.com/ontologies/2017/8/exercise.owl#〉.
@prefix food:〈http://www.neusoft.com/ontologies/2017/12/food.owl#〉.
@prefix people:〈http://www.neusoft.com/ontologies/2017/12/people.owl#〉.
@prefix xsd:〈http://www.w3.org/2001/XMLSchema#〉.
@include 〈RDFS〉
...
#1 型糖尿病患者,如果存在高血糖和酮症,应当避免运动.
[r9:(?person people:people.person.has_diseases medicine:m.0849qj),
(?person people:people.person.has_symptoms medicine:高血糖),
(?person people:people.person.has_symptoms medicine:酮症)→
(?person people:people.person.can_do_exercise “false”∧∧xsd:boolean)]
#空腹血糖在 13.9mmol/L(250mg/dl)以上且尿酮体阳性,或尿酮体虽阴性但空腹血糖在 16.7mmol/L
#(300mg/dl)以上的病人,运动不仅不能促进肌肉对糖的利用,而且能促进肝脏对葡萄糖的输出,使脂肪分解
#增加,易诱发酮症酸中毒.
[r10:(?person people:people.person.has_diseases medicine:m.0849qj),
(?person people:空腹血糖?value),
ge(?value,13.9),
(?person people:尿酮体 medicine:阳性)→
(?person people:people.person.can_do_exercise “false”∧∧xsd:boolean)]
[r11:(?person people:people.person.has_diseases medicine:m.0849qj),
(?person people:空腹血糖?value),
ge(?value,16.7),