我不确定你所说的“一个称为类别的新概念”是什么意思,也许你可以举个例子?
如果您的意思是您想要添加额外的元数据,也许作为在用户界面中组织信息的一种方式,则无需扩展语义网络语言或存储系统 - 它们已经可以做您想做的事情。
假设您有一所学校的数据英国公立学校数据集 http://blogs.talis.com/n2/archives/818(为简洁起见,使用 Turtle 编码):
@prefix sch-ont: <http://education.data.gov.uk/def/school/>.
<http://education.data.gov.uk/id/school/135412>
a sch-ont:School;
sch-ont:establishmentStatus
<http://education.data.gov.uk/def/school/EstablishmentStatus_Open>;
sch-ont:MSOA <http://statistics.data.gov.uk/id/msoa/E02000001>;
sch-ont:establishmentName "Guildhall School of Music and Drama";
...
您可以直接从以下位置查询该数据SPARQL 端点 http://services.data.gov.uk/education/sparql,或者您可以下载数据并将其本地存储在您自己的三重存储中。无论哪种方式,您都可以完全自由地添加对用户有用的额外信息。例如:
@prefix ankurs-app: <http://ankur.org/example/app/vocab/display#>.
<http://education.data.gov.uk/id/school/135412>
ankurs-app:category ankurs-app:wkdCool.
您可以将此新三元组存储在与下载数据相同的图表中,也可以将其存储在单独的命名图表中,以指示其信息与源数据具有不同的来源。不管怎样,从 Jena 以编程方式或通过 SPARQL 查询来查询它都很简单。
进行布局有效率的查询无模式的三重中心数据是一个经过充分研究的难题。大多数 RDF 平台(包括 Jena)都具有经过良好优化的代码,用于根据自己的数据库方案查询和更新三元组。您必须有充分的理由开始自己的关系表布局:)
如果您确实需要采用现有的关系表方案并将其映射到 Jena RDF 模型,请查看D2RQ http://www4.wiwiss.fu-berlin.de/bizer/d2rq/.