在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 |
+----------------------------------------+------------+----------------------------------------+