我不确定您所说的“称为类别的新概念”是什么意思,也许您可以举个例子?
如果您的意思是要添加额外的元数据,也许是作为在用户界面中组织信息的一种方式,则无需扩展语义 Web 语言或存储系统——它们已经可以满足您的需求。
假设您有来自英国政府学校数据集的一所学校的数据(为简洁起见,使用 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 端点查询该数据,也可以下载数据并将其本地存储在您自己的三重存储中。无论哪种方式,您都可以完全自由地添加对您的用户有用的额外信息。例如:
@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。