在SPARQL构造中创建持久的虹膜?

在SPARQL构造中创建持久的虹膜?,sparql,Sparql,我被要求处理一些非常扁平的三元组,它们的谓词中嵌入了关于对象的信息。换句话说,几乎所有谓词都是owl:DatatypeProperties :meeting1 :hasChair "Professor Gadget" . :meeting1 :chairPhoneNumber "555-1212" . :meeting1 :hasAttendee "William Gosset" . 我的团队一直在考虑在语义上扩展三元组。我认为这需要创建新的实体/rdf:Resources/owl:Thing

我被要求处理一些非常扁平的三元组,它们的谓词中嵌入了关于对象的信息。换句话说,几乎所有谓词都是
owl:DatatypeProperties

:meeting1 :hasChair "Professor Gadget" .
:meeting1 :chairPhoneNumber "555-1212" .
:meeting1 :hasAttendee "William Gosset" .
我的团队一直在考虑在语义上扩展三元组。我认为这需要创建新的实体/
rdf:Resource
s/
owl:Thing
s。如果我有选择的话,我更愿意基于UUID创建IRI(而不是使用空白节点)

我知道我能说

CONSTRUCT { ?m a :meeting } WHERE { ?m :hasChair ?c }
我怎么能说“Gadget教授”一定是一些人的名字,同样的人有电话号码555-1212


演示如何
将构造的URI绑定到SPARQL变量并
插入它。此外,我知道我可以使用
struid()
创建UUID。我是否能够在
构造
语句中的
插入
子查询中执行此操作?我希望Professor Gadget的URI在会议主持人声明、电话号码声明和姓名声明中保持不变,但我希望为不同姓名的人或主持会议的人提供新的UUID,而不是
:meeting1
,等等。我宁愿冒险将多个UUID分配给Professor Gadget,也不愿潜在地使用同一个UUID来指代多个会议主持人。

以下是迄今为止的研究成果。我想这就是我想要的,但仍然可以接受建议

带前缀的其他三元组:

prefix : <http://example.com/>
:meeting2 :hasChair "James Moriarty" .
:meeting2 :chairPhoneNumber "unlisted" .
:meeting2 :hasAttendee "William Gosset" .

如果
:会议1:hasChair“Professor Gadget”
:会议3:hasChair“Professor Gadget”
?struid()为每个结果生成不同的UUID。我认为,您需要类似于
URI(concat(“http://example.com/“,MD5(?c)))作为?u
@StanislavKralin谢谢。该项目的目标之一是在现实中为一个实体解析多个ID,因此这可能不是必需的。否则,我同意MD5()将是最佳实践。
prefix : <http://example.com/>
:meeting2 :hasChair "James Moriarty" .
:meeting2 :chairPhoneNumber "unlisted" .
:meeting2 :hasAttendee "William Gosset" .
prefix : <http://example.com/>
CONSTRUCT 
{ 
    ?m a :meeting .
    ?m :hasChair ?u .
    ?u :name ?c
}
    WHERE { ?m :hasChair ?c .
    bind (URI(concat("http://example.com/",STRUUID())) as ?u)}
+----------------------------------------+------------+----------------------------------------+
|                subject                 | predicate  |                 object                 |
+----------------------------------------+------------+----------------------------------------+
|  :09dfb998-cc34-48d3-830e-e480f09e94ba | :name      | "James Moriarty"^^xsd:string           |
|  :323b0c9c-0b07-4f32-abb6-503c1d97d80e | :name      | "Professor Gadget"^^xsd:string         |
|  :meeting1                             | :hasChair  | :323b0c9c-0b07-4f32-abb6-503c1d97d80e  |
|  :meeting1                             | rdf:type   | :meeting                               |
|  :meeting2                             | :hasChair  | :09dfb998-cc34-48d3-830e-e480f09e94ba  |
|  :meeting2                             | rdf:type   | :meeting                               |
+----------------------------------------+------------+----------------------------------------+