论文部分内容阅读
语义物联网(SWoT)技术是对物联网的一个更深层次的扩展,其特点是以语义技术为基础,结合丰富的知识进行语义的查询与推理。传感器网络作为其最基础的设施,不同的传感器连续产生数据时,为了更好的表达和处理这些动态数据流,及时获取海量语义数据中有价值的隐含信息和知识,了解状态信息并作出反应,RDF流处理(RDF Stream processing,RSP)技术被提出。对传感器产生的语义数据流执行复杂推理的能力,目前已成为语义网社区中的重要研究领域。推理的难点在于数据量太大,计算耗时长,并且需要满足实时的特点,显然单机系统已难以使用大规模语义数据的推理。当前大多数RDF流处理系统是以SPARQL(W3C标准RDF查询语言)为基础实现的,但这些引擎在捕获复杂的用户需求和处理复杂的推理任务方面存在局限性。此外,基于Hadoop分布式处理框架面对流式处理的不足,并随数据量的增加效率不断降低,本文主要针对这一问题进行研究。基于上述的问题和策略,本文设计并实现了基于大数据框架Spark Streaming和Kafka的RSP方法,结合RDF/RDFs、OWL、ASP等语义技术,共同支持引擎的执行,实现对实时语义数据的高效推理能力。本文以智能家居SSN(Sensor Semantic NetWork)为示例,首先对设备间的共有特性及复杂事件进行分析,并结合已有SNN本体构建智能家居本体库,然后基于本体库实时产生的RDF实例对象,并通过中间件Kafka构建RDF流,接下来构建RSP-SR引擎进行数据的查询推理。同时本文还设计了RDF流的窗口划分策略,并去重、过滤、划分不必要的三元组等;设计数据分区模型减轻推理之前的计算工作;根据用户设定的事件模式选择性地进行静态知识库加载;查询优化等,最后依据已有的评估方法和测试指标,对比该方法与Sparkwave及S2RDF(同样基于Spark的RSP方法)三者在吞吐量和占用内存上的情况。结果表明,使用Spark组件(SparkSQL,Graphx,SparkML等)和ASP方法极大简化了复杂推理程序的实现,基于内存的迭代计算极大避免了推理过程中产生的中间结果的重复读取。因此使用该方法进行RDF流推理是可行的,且效率和可扩展性更高。