<jupyter_start><jupyter_text>Create Family and assign the leader to the Family<jupyter_code>def insertFamilyQry(name):
    return """INSERT DATA {
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        <http://tbio.orient.cas.cz#%s家族> a <http://www.w3.org/2002/07/owl#Class> ;
        <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://tbio.orient.cas.cz#Family> .
        
        <http://tbio.orient.cas.cz#%s家族__%s> a <http://tbio.orient.cas.cz#Family> ;
            <http://tbio.orient.cas.cz#hasFamily> <http://tbio.orient.cas.cz#%s家族> .
        <http://tbio.orient.cas.cz#%s> tbio:isMemberOfFamily <http://tbio.orient.cas.cz#%s家族__%s> .
    }
}""" % (name, name, name, name, name, name, name)
with stardog.Connection('tbio', **conn_details) as conn:
    idx = 0
    for family in families:
        query = insertFamilyQry(family)

        results = conn.update(query)

        print(idx, family, results)
#         print(results)
        idx += 1
#         break<jupyter_output>0 吳三連 None
1 吳秋微 None
2 孫景華 None
3 宋進英 None
4 廖文毅 None
5 彭孟緝 None
6 戴炎輝 None
7 方雲祥 None
8 施雨鄉 None
9 曾浴沂 None
10 朱應三 None
11 李仲義 None
12 李兆偉 None
13 李南 None
14 李春生 None
15 李枝盈 None
16 杜聰明 None
17 林伯奏 None
18 林坤鐘 None
19 林政雄 None
20 林木土 None
21 林木桂 None
22 林秋江 None
23 楊子培 None
24 楊晏然 None
25 沈葆禎 None
26 洪水龍 None
27 洪蘭友 None
28 溫應星 None
29 潘貫 None
30 白崇禧 None
31 秦汾 None
32 羅萬俥 None
33 翁瑞春 None
34 蔡得一 None
35 蔡法平 None
36 蘇紹文 None
37 許子秋 None
38 謝喆兟 None
39 郭天恩 None
40 郭廷俊 None
41 郭金塔 None
42 陳星恆 None
43 陳望曾 None
44 陳查某 None
45 陳炘 None
46 陳贊治 None
47 顏岫峰 None
48 馮明雄 None
49 黃炎生 None
50 黃玉麟 None
51 黃聯登 None
52 翁淑治 None<jupyter_text>insert son to the family<jupyter_code>def insertSonQry(name):
    return """INSERT {
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        ?familyEvt a <http://tbio.orient.cas.cz#Family> ;
            <http://tbio.orient.cas.cz#hasFamily> <http://tbio.orient.cas.cz#%s家族> .
        ?son tbio:isMemberOfFamily ?familyEvt .
    }
}
WHERE { 
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        <http://tbio.orient.cas.cz#%s> tbio:hasSon ?son .
        BIND(STR(?son) AS ?sonStr) .
        BIND(REPLACE(?sonStr, "http://tbio.orient.cas.cz#", "") AS ?sonName) .
        BIND(CONCAT("http://tbio.orient.cas.cz#%s家族__", ?sonName) AS ?familyStr) .
        BIND(IRI(?familyStr) AS ?familyEvt) .
    }
}""" % (name, name, name)
with stardog.Connection('tbio', **conn_details) as conn:
    idx = 0
    for family in families:
        query = insertSonQry(family)

        results = conn.update(query)

        print(idx, family, results)
#         print(results)
        idx += 1
#         break<jupyter_output>0 吳三連 None
1 吳秋微 None
2 孫景華 None
3 宋進英 None
4 廖文毅 None
5 彭孟緝 None
6 戴炎輝 None
7 方雲祥 None
8 施雨鄉 None
9 曾浴沂 None
10 朱應三 None
11 李仲義 None
12 李兆偉 None
13 李南 None
14 李春生 None
15 李枝盈 None
16 杜聰明 None
17 林伯奏 None
18 林坤鐘 None
19 林政雄 None
20 林木土 None
21 林木桂 None
22 林秋江 None
23 楊子培 None
24 楊晏然 None
25 沈葆禎 None
26 洪水龍 None
27 洪蘭友 None
28 溫應星 None
29 潘貫 None
30 白崇禧 None
31 秦汾 None
32 羅萬俥 None
33 翁瑞春 None
34 蔡得一 None
35 蔡法平 None
36 蘇紹文 None
37 許子秋 None
38 謝喆兟 None
39 郭天恩 None
40 郭廷俊 None
41 郭金塔 None
42 陳星恆 None
43 陳望曾 None
44 陳查某 None
45 陳炘 None
46 陳贊治 None
47 顏岫峰 None
48 馮明雄 None
49 黃炎生 None
50 黃玉麟 None
51 黃聯登 None
52 翁淑治 None<jupyter_text>insert daughter to the family<jupyter_code>def insertDauQry(name):
    return """INSERT {
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        ?familyEvt a <http://tbio.orient.cas.cz#Family> ;
            <http://tbio.orient.cas.cz#hasFamily> <http://tbio.orient.cas.cz#%s家族> .
        ?daughter tbio:isMemberOfFamily ?familyEvt .
    }
}
WHERE { 
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        <http://tbio.orient.cas.cz#%s> tbio:hasDaughter ?daughter .
        BIND(STR(?daughter) AS ?dauStr) .
        BIND(REPLACE(?dauStr, "http://tbio.orient.cas.cz#", "") AS ?name) .
        BIND(CONCAT("http://tbio.orient.cas.cz#%s家族__", ?name) AS ?familyStr) .
        BIND(IRI(?familyStr) AS ?familyEvt) .
    }
}""" % (name, name, name)
with stardog.Connection('tbio', **conn_details) as conn:
    idx = 0
    for family in families:
        query = insertDauQry(family)

        results = conn.update(query)

        print(idx, family, results)
#         print(results)
        idx += 1
#         break<jupyter_output>0 吳三連 None
1 吳秋微 None
2 孫景華 None
3 宋進英 None
4 廖文毅 None
5 彭孟緝 None
6 戴炎輝 None
7 方雲祥 None
8 施雨鄉 None
9 曾浴沂 None
10 朱應三 None
11 李仲義 None
12 李兆偉 None
13 李南 None
14 李春生 None
15 李枝盈 None
16 杜聰明 None
17 林伯奏 None
18 林坤鐘 None
19 林政雄 None
20 林木土 None
21 林木桂 None
22 林秋江 None
23 楊子培 None
24 楊晏然 None
25 沈葆禎 None
26 洪水龍 None
27 洪蘭友 None
28 溫應星 None
29 潘貫 None
30 白崇禧 None
31 秦汾 None
32 羅萬俥 None
33 翁瑞春 None
34 蔡得一 None
35 蔡法平 None
36 蘇紹文 None
37 許子秋 None
38 謝喆兟 None
39 郭天恩 None
40 郭廷俊 None
41 郭金塔 None
42 陳星恆 None
43 陳望曾 None
44 陳查某 None
45 陳炘 None
46 陳贊治 None
47 顏岫峰 None
48 馮明雄 None
49 黃炎生 None
50 黃玉麟 None
51 黃聯登 None
52 翁淑治 None<jupyter_text>insert grandson into family<jupyter_code>def insertGrandsonQry(name):
    return """INSERT {
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        ?familyEvt a <http://tbio.orient.cas.cz#Family> ;
            <http://tbio.orient.cas.cz#hasFamily> <http://tbio.orient.cas.cz#%s家族> .
        ?grandChild tbio:isMemberOfFamily ?familyEvt .
    }
}
WHERE { 
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        <http://tbio.orient.cas.cz#%s> tbio:hasSon ?son .
        GRAPH ?g {
            ?son tbio:hasSon ?grandChild .
        }
        BIND(STR(?grandChild) AS ?grandStr) .
        BIND(REPLACE(?grandStr, "http://tbio.orient.cas.cz#", "") AS ?grandName) .
        BIND(CONCAT("http://tbio.orient.cas.cz#%s家族__", ?grandName) AS ?familyStr) .
        BIND(IRI(?familyStr) AS ?familyEvt) .
    }
}""" % (name, name, name)
with stardog.Connection('tbio', **conn_details) as conn:
    idx = 0
    for family in families:
        query = insertGrandsonQry(family)

        results = conn.update(query)

        print(idx, family, results)
#         print(results)
        idx += 1
#         break<jupyter_output>0 吳三連 None
1 吳秋微 None
2 孫景華 None
3 宋進英 None
4 廖文毅 None
5 彭孟緝 None
6 戴炎輝 None
7 方雲祥 None
8 施雨鄉 None
9 曾浴沂 None
10 朱應三 None
11 李仲義 None
12 李兆偉 None
13 李南 None
14 李春生 None
15 李枝盈 None
16 杜聰明 None
17 林伯奏 None
18 林坤鐘 None
19 林政雄 None
20 林木土 None
21 林木桂 None
22 林秋江 None
23 楊子培 None
24 楊晏然 None
25 沈葆禎 None
26 洪水龍 None
27 洪蘭友 None
28 溫應星 None
29 潘貫 None
30 白崇禧 None
31 秦汾 None
32 羅萬俥 None
33 翁瑞春 None
34 蔡得一 None
35 蔡法平 None
36 蘇紹文 None
37 許子秋 None
38 謝喆兟 None
39 郭天恩 None
40 郭廷俊 None
41 郭金塔 None
42 陳星恆 None
43 陳望曾 None
44 陳查某 None
45 陳炘 None
46 陳贊治 None
47 顏岫峰 None
48 馮明雄 None
49 黃炎生 None
50 黃玉麟 None
51 黃聯登 None
52 翁淑治 None<jupyter_text>insert grand daughter into family<jupyter_code>def insertGranddauQry(name):
    return """INSERT {
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        ?familyEvt a <http://tbio.orient.cas.cz#Family> ;
            <http://tbio.orient.cas.cz#hasFamily> <http://tbio.orient.cas.cz#%s家族> .
        ?grandChild tbio:isMemberOfFamily ?familyEvt .
    }
}
WHERE { 
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        <http://tbio.orient.cas.cz#%s> tbio:hasSon ?son .
        GRAPH ?g {
            ?son tbio:hasDaughter ?grandChild .
        }
        BIND(STR(?grandChild) AS ?grandStr) .
        BIND(REPLACE(?grandStr, "http://tbio.orient.cas.cz#", "") AS ?grandName) .
        BIND(CONCAT("http://tbio.orient.cas.cz#%s家族__", ?grandName) AS ?familyStr) .
        BIND(IRI(?familyStr) AS ?familyEvt) .
    }
}""" % (name, name, name)
with stardog.Connection('tbio', **conn_details) as conn:
    idx = 0
    for family in families:
        query = insertGranddauQry(family)

        results = conn.update(query)

        print(idx, family, results)
#         print(results)
        idx += 1
#         break<jupyter_output>0 吳三連 None
1 吳秋微 None
2 孫景華 None
3 宋進英 None
4 廖文毅 None
5 彭孟緝 None
6 戴炎輝 None
7 方雲祥 None
8 施雨鄉 None
9 曾浴沂 None
10 朱應三 None
11 李仲義 None
12 李兆偉 None
13 李南 None
14 李春生 None
15 李枝盈 None
16 杜聰明 None
17 林伯奏 None
18 林坤鐘 None
19 林政雄 None
20 林木土 None
21 林木桂 None
22 林秋江 None
23 楊子培 None
24 楊晏然 None
25 沈葆禎 None
26 洪水龍 None
27 洪蘭友 None
28 溫應星 None
29 潘貫 None
30 白崇禧 None
31 秦汾 None
32 羅萬俥 None
33 翁瑞春 None
34 蔡得一 None
35 蔡法平 None
36 蘇紹文 None
37 許子秋 None
38 謝喆兟 None
39 郭天恩 None
40 郭廷俊 None
41 郭金塔 None
42 陳星恆 None
43 陳望曾 None
44 陳查某 None
45 陳炘 None
46 陳贊治 None
47 顏岫峰 None
48 馮明雄 None
49 黃炎生 None
50 黃玉麟 None
51 黃聯登 None
52 翁淑治 None<jupyter_text>Check the leader name is a correct name or not<jupyter_code># def sparqlQry(name):
#     return """SELECT DISTINCT ?p WHERE { 
#     GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
#         tbio:%s ?p ?o .
#         # ?p rdfs:subPropertyOf ?familyOP .
#     }
#     ?p rdfs:subPropertyOf ?familyOP .
#     FILTER ( ?familyOP = tbio:hasFamilyRelation )
# } ORDER BY (?p)""" % (name)
# import json

# with stardog.Connection('tbio', **conn_details) as conn:
# #     conn.begin()

#     idx = 0
#     for family in families:
#         query = sparqlQry(family)

#         results = conn.select(query)
# #         print(results)
# #         jsonRes = json.loads(results)
# #         results = conn.update(query)
#         print(idx, family, results.get('results').get('bindings'))
# #         print(results)
#         idx += 1
# #         break<jupyter_output><empty_output><jupyter_text>Special Case<jupyter_code>def insertQry(family, name):
    return """INSERT DATA {
    GRAPH <http://tbio.orient.cas.cz/chrj_pr> {
        <http://tbio.orient.cas.cz#%s家族> a <http://www.w3.org/2002/07/owl#Class> ;
        <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://tbio.orient.cas.cz#Family> .
        
        <http://tbio.orient.cas.cz#%s家族__%s> a <http://tbio.orient.cas.cz#Family> ;
            <http://tbio.orient.cas.cz#hasFamily> <http://tbio.orient.cas.cz#%s家族> .
        <http://tbio.orient.cas.cz#%s> tbio:isMemberOfFamily <http://tbio.orient.cas.cz#%s家族__%s> .
    }
}""" % (family, family, name, family, name, family, name)
with stardog.Connection('tbio', **conn_details) as conn:
    query = insertQry('翁淑治', '翁淑霞')

    results = conn.update(query)

    print(family, results)<jupyter_output>翁淑治 None
{'fraction_non_alphanumeric': 0.11720059142434697, 'fraction_numerical': 0.051256776737309016, 'mean_word_length': 2.745293466223699, 'pattern_counts': {'":': 0, '<': 70, '<?xml version=': 0, '>': 70, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '499575', 'license': 'MIT', 'n_tokens_mistral': 5514, 'n_tokens_neox': 5263, 'n_words': 1209, 'path': 'tbio/assign_families_in_chrj_pr.ipynb', 'repo_name': 'VincentCheng34/StudyOnPython', 'size': '10145'}