0

我想将.CSV格式的 Adob​​e 安全咨询产品的数据集与我已经创建的本体链接起来,数据集的示例如下所示:

文本 标签
APSA08-05 SecAdvisoryID
APSB12-09 公告编号

这是我使用WebOWL 工具创建的简单本体:

在此处输入图像描述

对于本体,我在Python中使用RDFlib。这是本体的代码:

from rdflib import Graph, Namespace
from rdflib.namespace import RDF, XSD, RDFS
from rdflib.term import Literal

#create the graph
graph = Graph()
test = Namespace("http://example.org/cyber/test#")
graph.bind("test", test)

graph.add((test.SecAdvisoryID, RDF.type, RDFS.Class))
graph.add((test.BulletinID, RDF.type, RDFS.Class))

graph.add((test.hasTitle, RDFS.domain, test.SecAdvisoryID))
graph.add((test.hasTitle, RDFS.domain, test.BulletinID))

graph.add((test.hasBulletin, RDFS.domain, test.SecAdvisoryID)) 
graph.add((test.hasBulletin, RDFS.range, test.BulletinID))
graph.add((test.hasAdvisory, RDFS.domain, test.BulletinID)) 
graph.add((test.hasAdvisory, RDFS.range, test.SecAdvisoryID))

# save the graph
with open("testgraph.ttl", "wb") as f:
    f.write(graph.serialize(format="turtle"))

我将其保存为.ttl(乌龟)格式。

testgraph.ttl的输出:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix test: <http://example.org/cyber/test#> .

test:BulletinID a rdfs:Class .

test:SecAdvisoryID a rdfs:Class .

test:hasAdvisory rdfs:domain test:BulletinID ;
    rdfs:range test:SecAdvisoryID .

test:hasBulletin rdfs:domain test:SecAdvisoryID ;
    rdfs:range test:BulletinID .

test:hasTitle rdfs:domain test:BulletinID,
        test:SecAdvisoryID .

我的目的是做一个安全咨询的知识图谱,我爬的知识来自Adobe的安全咨询。因此,我的问题是如何确保本体能够识别数据集?

4

1 回答 1

1

Web 上的CSV规范提供了一种将 CSV 映射到 RDF的方法,使用元数据文件来描述关系。

虽然存在与元数据文件相关联的词汇,但该格式允许在元数据中使用任何词汇。

迄今为止,我知道没有 Python 实现,但我的Ruby 实现与规范完全兼容,可以在http://rdf.greggkellogg.net/distiller在线测试。

于 2021-05-31T19:48:04.280 回答