将一个字符串分成三元组(三个字段的元组),主语谓词和对象.

jay*_*ila 0 python algorithm rdf

例如:

示例RDF字符串.

<Tom_Wilkinson_(演员)> <actedIn>"In_the_Bedroom","The_Patriot_(2000_film)","Black_Knight_(电影)","The_Last_Kiss","Cassandras_Dream"; <bornOnDate>"1948-12-12"; <isCalled>"Tom Wilkinson(Schauspieler)","טוםוילקינסון","トム·ウィルキンソン","Tom Wilkinson","וםוילקינסון","ム·ウィルキンソン"; .

给定字符串的三元组 -

<Tom_Wilkinson_(actor)> <actedIn> "In_the_Bedroom"     
<Tom_Wilkinson_(actor)> <actedIn> "The_Patriot_(2000_film)" 
<Tom_Wilkinson_(actor)> <actedIn> "Black_Knight_(film)" 
<Tom_Wilkinson_(actor)> <actedIn> "The_Last_Kiss" 
<Tom_Wilkinson_(actor)> <actedIn> "Cassandras_Dream"
<Tom_Wilkinson_(actor)> <bornOnDate> "1948-12-12"
<Tom_Wilkinson_(actor)> <isCalled> "Tom Wilkinson (Schauspieler)"
Run Code Online (Sandbox Code Playgroud)

注 - 对象之间可以有空格.比方说"Tom Wilkinson(Schauspieler)"是一个包含空格的对象.

Jos*_*lor 5

您提供的输入实际上已经是某些RDF的Turtle(或N3)序列化.它的格式通常是这样的,有些@base指定:

@base <http://stackoverflow.com/q/23192184/1281433> .

<Tom_Wilkinson_(actor)> <actedIn> "In_the_Bedroom" , "The_Patriot_(2000_film)" ,
                                  "Black_Knight_(film)" , "The_Last_Kiss" ,
                                  "Cassandras_Dream";
                        <bornOnDate> "1948-12-12";
                        <isCalled> "Tom Wilkinson (Schauspieler)" ,
                                   "??? ?????????" , "??????????" ,
                                   "Tom Wilkinson" , "?? ?????????" ,
                                   "?????????" .
Run Code Online (Sandbox Code Playgroud)

如果添加适当的@base声明,则可以使用任何可以读取Turtle并在N-Triples中序列化的库来读取输入并写入输出.例如,使用Jena,rdfcat您可以转换为多种不同的格式,包括N-Triples:

$ rdfcat -out N-TRIPLES input.ttl
Run Code Online (Sandbox Code Playgroud)
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/actedIn> "Black_Knight_(film)" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/isCalled> "?????????" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/isCalled> "??????????" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/isCalled> "Tom Wilkinson (Schauspieler)" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/isCalled> "?? ?????????" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/isCalled> "??? ?????????" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/actedIn> "The_Last_Kiss" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/bornOnDate> "1948-12-12" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/actedIn> "The_Patriot_(2000_film)" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/actedIn> "In_the_Bedroom" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/isCalled> "Tom Wilkinson" .
<http://stackoverflow.com/q/23192184/Tom_Wilkinson_(actor)> <http://stackoverflow.com/q/23192184/actedIn> "Cassandras_Dream" .
Run Code Online (Sandbox Code Playgroud)

由于您使用Python标记了这一点,您可能会发现RDFlib比Jena更有用,但这里真正的问题应该是关于如何进行转换,而不是库请求(因为库请求不属于Stack Overflow主题).