我一直在尝试探索Marklogic 7的RDF 三重存储功能和语义搜索功能,然后使用SPARQL进行查询。我能够执行一些基本操作,例如:
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"at"/MarkLogic/semantics.xqy";
sem:rdf-insert(sem:triple(sem:iri("http://example.org/ns/people#m"),
sem:iri("http://example.com/ns/person#firstName"), "Sam"),(),(),"my collection")
它创建一个三元组,然后使用以下 SPARQL 查询它:
PREFIX ab: <http://example.org/ns/people#>
PREFIX ac: <http://example.com/ns/person#>
SELECT ?Name
WHERE
{ ab:m ac:firstName ?Name . }
它检索Sam作为结果。 已编辑:在我的用例中,我有一个分隔文件(结构化数据),其中包含我使用 MLCP 摄取到 ML 中的 10 亿条记录,这些记录存储在 ML 中,例如:
<root>
<ID>1000-000-000--000</ID>
<ACCOUNT_NUM>9999</ACCOUNT_NUM>
<NAME>Vronik</NAME>
<ADD1>D7-701</ADD1>
<ADD2>B-Valentine</ADD2>
<ADD3>Street 4</ADD3>
<ADD4>Fifth Avenue</ADD4>
<CITY>New York</CITY>
<STATE>NY</STATE>
<HOMPHONE>0002600000</HOMPHONE>
<BASEPHONE>12345</BASEPHONE>
<CELLPHONE>54321</CELLPHONE>
<EMAIL_ADDR>abc@gmail.com</EMAIL_ADDR>
<CURRENT_BALANCE>10000</CURRENT_BALANCE>
<OWNERSHIP>JOINT</OWNERSHIP>
</root>
现在,我想对上面的数据集使用 RDF/语义特征。但是,我无法理解是否需要将上述文档转换为 RDF,如下所示(显示为<NAME>
),假设这是正确的方法:
<sem:triple>
<sem:subject>unique/uri/Person
</sem:subject>
<sem:predicate>unique/uri/Name
</sem:predicate>
<sem:object datatype="http://www.w3.org/2001/XMLSchema#string"
xml:lang="en">Vronik
</sem:object>
</sem:triple>
然后在 ML 中摄取这些文档并使用 SPARQL 进行搜索,或者我是否需要只摄取我的文档,然后分别摄取从外部来源获得的三元组,并以某种方式(如何..??)将它们链接到我的文档,然后使用 SPARQL 进行查询?还是有其他方法我应该这样做?