Sparql 在本体注释的JSON对象之间执行虚拟对齐

Sparql 在本体注释的JSON对象之间执行虚拟对齐,sparql,rdf,owl,semantic-web,ontology,Sparql,Rdf,Owl,Semantic Web,Ontology,我有一个应用程序,它通过RESTAPI从各种其他应用程序请求JSON对象。任何应用程序的响应均采用以下格式: { data : { key1: { val: value, defBy: "ontology class"} key2: ..., } } 以下代码描述了App1中的对象: { data : { key1: { val: "98404506-385576361", defBy: "abc:SHA-224"} } }

我有一个应用程序,它通过RESTAPI从各种其他应用程序请求JSON对象。任何应用程序的响应均采用以下格式:

{
data : {
        key1: { val: value, defBy: "ontology class"}
        key2: ...,
     }
}
以下代码描述了App1中的对象:

{
data : {
        key1: { val: "98404506-385576361", defBy: "abc:SHA-224"}
     }
}
以下代码描述了App2中的对象:

{
    data : {
            key2: { val: "495967838-485694812", defBy: "xyz:SHA3-224"}
         }
    }
这里,
deffy
指的是用于加密
val
中字符串的算法。当我的应用程序收到这些对象时,它会解析JSON并将对象中的每个kv转换为RDF,以便:

// For objects from App1:
key1 rdf:type osba:key
key1 osba:generatedBy abc:SHA-224
...
// For objects from App2
key2 rdf:type osba:key
key2 osba:generatedBy xyz:SHA3-224
我需要以某种方式查询生成的RDF数据,我可以指定任何键的
osba:generatedBy
是否属于SHA族,然后将主题作为有效的查询结果返回,例如:
where{k osba:generatedBy???}

请注意以下几点:

  • 我还使用其他加密算法(如
    MD5
    )接收对象

  • 我事先不知道加入网络的新应用程序将使用什么加密算法,也不知道它使用什么
    NS
    。例如,在上述对象中,一个使用
    abc:
    ,另一个使用
    xyz:

  • 我无法使用SPARQL筛选,因为值可能是
    SecureHashAlgorithm
    而不是
    SHA

  • 我的问题是,我无法预先定义上层(引用的)本体,并映射传入对象的
    defBy:
    中存储的值,因为我事先不知道使用了什么本体,也不知道该值代表什么加密算法

    我读过关于自动本体集成、对齐、映射等方面的内容,。但是我找不到这个概念对我的问题的基本原理

    有什么解决办法吗

    3) 我无法使用SPARQL筛选,因为值可能是
    SecureHashAlgorithm
    而不是
    SHA

    定义的SPARQL筛选。因此,沿着

    SELECT ?key
     WHERE { ?key osba:generatedBy  ?generator
             FILTER regex(?generator, "^s(ecure)?h(ash)?a(lgorithm)?.*", "i") }
    
    (注意:未测试)应完成此工作。要构建一个好的正则表达式,我可以推荐


    如果有必要:您可以将IRI转换为字符串(用于匹配)。

    您能详细说明第3点吗?您尝试过哪些过滤器不起作用?我尝试过使用Sha*等通配符功能,但我无法解决问题,因为在P-3中表达的原因没有集成本体,您无法进行查询扩展等。显然,您需要同义词术语的映射,否则就无法编写完整正确的过滤器。这适用于每个域。名称空间的意义也不清楚。它们只是语法糖,对SPARQL查询的语义没有帮助。我需要使用语义而不是正则表达式,因为字符串可以改变,如果传入类型是FIPS PUB 180-4会怎么样?SHA3的认证代码您到底想要实现什么?你能用输入数据和预期的输出组合一个小例子吗?如果只是关于SHA被“fips pub 180-4”引用,那么就把它包含到您的正则表达式中?