예제 #1
0
    def setUp(self):
        # Initialization
        self.login(*self.create_user("*****@*****.**", "password"))

        encoded_file = b64encode(self.data.encode('utf8')).decode('ascii')

        print("XML length:", len(encoded_file))
        upload = self.upload_template % (encoded_file)
        response = self.client.post("/pub",
                                    data=upload,
                                    content_type="text/turtle",
                                    follow_redirects=True)
        self.assertEquals(response.status, '201 CREATED')

        response = self.client.post(
            "/pub",
            data=open('/apps/nanomine-graph/setl/xml_ingest.setl.ttl',
                      'rb').read(),
            content_type="text/turtle",
            follow_redirects=True)
        self.assertEquals(response.status, '201 CREATED')

        setlmaker = autonomic.SETLMaker()
        setlmaker.dry_run = False
        results = self.run_agent(setlmaker)

        # confirm this is creating a SETL script for the XML file.
        self.assertTrue(len(results) > 0)

        setlr = autonomic.SETLr()
        setlr.dry_run = False

        print(len(self.app.db))
        for setlr_np in results:
            setlr_results = self.run_agent(setlr, nanopublication=setlr_np)
예제 #2
0
    def test_L102_S3_Hu_2007(self):
        self.login(*self.create_user("*****@*****.**","password"))
        upload = files['L102_S3_Hu_2007']
        
        response = self.client.post("/pub", data=upload, content_type="text/turtle",follow_redirects=True)
        self.assertEquals(response.status,'201 CREATED')

        response = self.client.post("/pub", data=open('/apps/nanomine-graph/setl/xml_ingest.setl.ttl','rb').read(),
                                    content_type="text/turtle", follow_redirects=True)
        self.assertEquals(response.status,'201 CREATED')
        
        setlmaker = autonomic.SETLMaker()

        results = self.run_agent(setlmaker)

        # confirm this is creating a SETL script for the XML file.
        self.assertTrue(len(results) > 0)

        setlr = autonomic.SETLr()

        print(len(self.app.db))
        for setlr_np in results:
            setlr_results = self.run_agent(setlr, nanopublication=setlr_np)

        nanocomposites = list(self.app.db.subjects(RDF.type,URIRef("http://nanomine.org/ns/PolymerNanocomposite")))
        print(nanocomposites, len(self.app.db))
        self.assertEquals(len(nanocomposites),1)
예제 #3
0
    def test_L102_S3_Hu_2007(self):
        self.login(*self.create_user("*****@*****.**", "password"))
        text = "Hello, World!"
        b64text = b64encode(text)
        nanopub = files['L102_S3_Hu_2007']
        response = self.client.post("/pub",
                                    data=nanopub,
                                    content_type="application/ld+json",
                                    follow_redirects=True)

        self.assertEquals(response.status, '201 CREATED')
        content = self.client.get(
            "/about",
            query_string={"uri": "http://example.com/testdatab64"},
            follow_redirects=True)
        self.assertEquals(content.mimetype, "text/plain")
        self.assertEquals(content.data, text)

        np = nanopub.Nanopublication()
        np.assertion.parse(data=open('../setl/xml_ingest.setl.ttl'),
                           format="turtle")
        setlmaker = autonomic.SETLMaker()

        results = self.run_agent(setlmaker, nanopublication=np)

        # confirm this is creating a SETL script for the XML file.

        setlr = autonomic.SETLr()

        for nanopub in results:
            setlr_results = self.run_agent(setlr, nanopublication=nanopub)
    def setUp(self):
        self.maxDiff = 10000
        self.login(*self.create_user("*****@*****.**", "password"))

        upload = '''<{}> a <http://nanomine.org/ns/NanomineJSONFile>, 
                        <https://www.iana.org/assignments/media-types/application/json> ,
                        <http://schema.org/DataDownload> ;
                        <http://vocab.rpi.edu/whyis/hasContent> "data:application/json;charset=UTF-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPFBvbHltZXJOYW5vY29tcG9zaXRlPjxJRD5MMTAyX1MzX0h1XzIwMDc8L0lEPjxDb250cm9sX0lEPkwxMDJfUzFfSHVfMjAwNzwvQ29udHJvbF9JRD48REFUQV9TT1VSQ0U+PENpdGF0aW9uPjxDb21tb25GaWVsZHM+PENpdGF0aW9uVHlwZT5yZXNlYXJjaCBhcnRpY2xlPC9DaXRhdGlvblR5cGU+PFB1YmxpY2F0aW9uPkpvdXJuYWwgb2YgdGhlIEV1cm9wZWFuIENlcmFtaWMgU29jaWV0eTwvUHVibGljYXRpb24+PFRpdGxlPkRpZWxlY3RyaWMgcHJvcGVydGllcyBvZiBCU1QvcG9seW1lciBjb21wb3NpdGU8L1RpdGxlPjxBdXRob3I+SHUsIFRhbzwvQXV0aG9yPjxBdXRob3I+SnV1dGksIEphcmk8L0F1dGhvcj48QXV0aG9yPkphbnR1bmVuLCBIZWxpPC9BdXRob3I+PEF1dGhvcj5WaWxrbWFuLCBUYWlzdG88L0F1dGhvcj48S2V5d29yZD5Db21wb3NpdGVzPC9LZXl3b3JkPjxLZXl3b3JkPkRpZWxlY3RyaWMgcHJvcGVydGllczwvS2V5d29yZD48S2V5d29yZD5NaWNyb3N0cnVjdHVyZS1maW5hbDwvS2V5d29yZD48S2V5d29yZD5CU1QtQ09DPC9LZXl3b3JkPjxQdWJsaXNoZXI+RWxzZXZpZXI8L1B1Ymxpc2hlcj48UHVibGljYXRpb25ZZWFyPjIwMDc8L1B1YmxpY2F0aW9uWWVhcj48RE9JPjEwLjEwMTYvai5qZXVyY2VyYW1zb2MuMjAwNy4wMi4wODI8L0RPST48Vm9sdW1lPjI3PC9Wb2x1bWU+PFVSTD5odHRwczovL3d3dy5zY2llbmNlZGlyZWN0LmNvbS9zY2llbmNlL2FydGljbGUvcGlpL1MwOTU1MjIxOTA3MDAxMjUyP3ZpYSUzRGlodWI8L1VSTD48TGFuZ3VhZ2U+RW5nbGlzaDwvTGFuZ3VhZ2U+PExvY2F0aW9uPk1pY3JvZWxlY3Ryb25pY3MgYW5kIE1hdGVyaWFscyBQaHlzaWNzIExhYm9yYXRvcmllcywgRU1QQVJUIFJlc2VhcmNoIEdyb3VwIG9mIEluZm90ZWNoIE91bHUsIFAuTy4gQm94IDQ1MDAsIEZJTi05MDAxNCBVbml2ZXJzaXR5IG9mIE91bHUsIEZpbmxhbmQ8L0xvY2F0aW9uPjxEYXRlT2ZDaXRhdGlvbj4yMDE1LTA3LTI0PC9EYXRlT2ZDaXRhdGlvbj48L0NvbW1vbkZpZWxkcz48Q2l0YXRpb25UeXBlPjxKb3VybmFsPjxJU1NOPjA5NTUtMjIxOTwvSVNTTj48SXNzdWU+MTMtMTU8L0lzc3VlPjwvSm91cm5hbD48L0NpdGF0aW9uVHlwZT48L0NpdGF0aW9uPjwvREFUQV9TT1VSQ0U+PE1BVEVSSUFMUz48TWF0cml4PjxNYXRyaXhDb21wb25lbnQ+PENoZW1pY2FsTmFtZT5jeWNsbyBvbGVmaW4gY29wb2x5bWVyPC9DaGVtaWNhbE5hbWU+PEFiYnJldmlhdGlvbj5DT0M8L0FiYnJldmlhdGlvbj48UG9seW1lclR5cGU+Y29wb2x5bWVyPC9Qb2x5bWVyVHlwZT48TWFudWZhY3R1cmVyT3JTb3VyY2VOYW1lPlRpY29uYSBHbWJILCBHZXJtYW55PC9NYW51ZmFjdHVyZXJPclNvdXJjZU5hbWU+PFRyYWRlTmFtZT5Ub3BhcyA4MDA3Uy0wNDwvVHJhZGVOYW1lPjxEZW5zaXR5Pjx2YWx1ZT4xLjAyPC92YWx1ZT48dW5pdD5nL2NtXjM8L3VuaXQ+PC9EZW5zaXR5PjwvTWF0cml4Q29tcG9uZW50PjwvTWF0cml4PjxGaWxsZXI+PEZpbGxlckNvbXBvbmVudD48Q2hlbWljYWxOYW1lPmJhcml1bSBzdHJvbnRpdW0gdGl0YW5hdGU8L0NoZW1pY2FsTmFtZT48QWJicmV2aWF0aW9uPkJTVDwvQWJicmV2aWF0aW9uPjxNYW51ZmFjdHVyZXJPclNvdXJjZU5hbWU+U2lnbWHigJNBbGRyaWNoIENoZW1pZSBHbWJILCBHZXJtYW55PC9NYW51ZmFjdHVyZXJPclNvdXJjZU5hbWU+PERlbnNpdHk+PHZhbHVlPjQuOTwvdmFsdWU+PHVuaXQ+Zy9jbV4zPC91bml0PjwvRGVuc2l0eT48U3BoZXJpY2FsUGFydGljbGVEaWFtZXRlcj48ZGVzY3JpcHRpb24+bGVzcyB0aGFuIDIwMCBubTwvZGVzY3JpcHRpb24+PHZhbHVlPjIwMDwvdmFsdWU+PHVuaXQ+bm08L3VuaXQ+PC9TcGhlcmljYWxQYXJ0aWNsZURpYW1ldGVyPjwvRmlsbGVyQ29tcG9uZW50PjxGaWxsZXJDb21wb3NpdGlvbj48RnJhY3Rpb24+PHZvbHVtZT4wLjA1PC92b2x1bWU+PC9GcmFjdGlvbj48L0ZpbGxlckNvbXBvc2l0aW9uPjxEZXNjcmlwdGlvbj5CYTAuNVNyMC41VGlPMzwvRGVzY3JpcHRpb24+PC9GaWxsZXI+PC9NQVRFUklBTFM+PFBST0NFU1NJTkc+PE1lbHRNaXhpbmc+PENob29zZVBhcmFtZXRlcj48TWl4aW5nPjxNaXhlcj5Ub3JxdWUgUmhlb21ldGVyPC9NaXhlcj48UlBNPjxkZXNjcmlwdGlvbj4zMi02NCBycG08L2Rlc2NyaXB0aW9uPjx2YWx1ZT40ODwvdmFsdWU+PHVuaXQ+cnBtPC91bml0PjwvUlBNPjxUaW1lPjx2YWx1ZT4xNTwvdmFsdWU+PHVuaXQ+bWludXRlczwvdW5pdD48dW5jZXJ0YWludHk+PHR5cGU+YWJzb2x1dGU8L3R5cGU+PHZhbHVlPjU8L3ZhbHVlPjwvdW5jZXJ0YWludHk+PC9UaW1lPjxUZW1wZXJhdHVyZT48dmFsdWU+MjMwPC92YWx1ZT48dW5pdD5DZWxzaXVzPC91bml0PjwvVGVtcGVyYXR1cmU+PC9NaXhpbmc+PC9DaG9vc2VQYXJhbWV0ZXI+PENob29zZVBhcmFtZXRlcj48TW9sZGluZz48TW9sZGluZ01vZGU+aG90LXByZXNzaW5nPC9Nb2xkaW5nTW9kZT48TW9sZGluZ0luZm8+PFRlbXBlcmF0dXJlPjx2YWx1ZT4yMDA8L3ZhbHVlPjx1bml0PkNlbHNpdXM8L3VuaXQ+PC9UZW1wZXJhdHVyZT48L01vbGRpbmdJbmZvPjwvTW9sZGluZz48L0Nob29zZVBhcmFtZXRlcj48L01lbHRNaXhpbmc+PC9QUk9DRVNTSU5HPjxDSEFSQUNURVJJWkFUSU9OPjxTY2FubmluZ19FbGVjdHJvbl9NaWNyb3Njb3B5PjxFcXVpcG1lbnRVc2VkPkpFT0wgSlNNLTY0MDA8L0VxdWlwbWVudFVzZWQ+PC9TY2FubmluZ19FbGVjdHJvbl9NaWNyb3Njb3B5PjxEaWVsZWN0cmljX2FuZF9JbXBlZGFuY2VfU3BlY3Ryb3Njb3B5X0FuYWx5c2lzPjxFcXVpcG1lbnQ+QWdpbGVudCBFNDk5MUE8L0VxdWlwbWVudD48L0RpZWxlY3RyaWNfYW5kX0ltcGVkYW5jZV9TcGVjdHJvc2NvcHlfQW5hbHlzaXM+PFhSYXlfRGlmZnJhY3Rpb25fYW5kX1NjYXR0ZXJpbmc+PEVxdWlwbWVudD5TaWVtZW5zIEQ1MDAwPC9FcXVpcG1lbnQ+PC9YUmF5X0RpZmZyYWN0aW9uX2FuZF9TY2F0dGVyaW5nPjwvQ0hBUkFDVEVSSVpBVElPTj48UFJPUEVSVElFUz48RWxlY3RyaWNhbD48QUNfRGllbGVjdHJpY0Rpc3BlcnNpb24+PERpZWxlY3RyaWNfUmVhbF9QZXJtaXR0aXZpdHk+PGRlc2NyaXB0aW9uPlJlbGF0aXZlIHBlcm1pdHRpdml0eSBhdCAxR0h6PC9kZXNjcmlwdGlvbj48dmFsdWU+Mi45PC92YWx1ZT48L0RpZWxlY3RyaWNfUmVhbF9QZXJtaXR0aXZpdHk+PERpZWxlY3RyaWNfTG9zc19UYW5nZW50PjxkZXNjcmlwdGlvbj5Mb3NzIFRhbmdlbnQgYXQgMSBHSHo8L2Rlc2NyaXB0aW9uPjx2YWx1ZT41ZS0wNTwvdmFsdWU+PC9EaWVsZWN0cmljX0xvc3NfVGFuZ2VudD48L0FDX0RpZWxlY3RyaWNEaXNwZXJzaW9uPjwvRWxlY3RyaWNhbD48L1BST1BFUlRJRVM+PC9Qb2x5bWVyTmFub2NvbXBvc2l0ZT4=" .
                        '''.format(
            "/apps/nanomine-graph/ChemDatabase/chemprops_example.json")

        response = self.client.post("/pub",
                                    data=upload,
                                    content_type="text/turtle",
                                    follow_redirects=True)
        self.assertEquals(response.status, "201 CREATED")

        response = self.client.post(
            "/pub",
            data=open("/apps/nanomine-graph/setl/chem_props.setl.ttl",
                      "rb").read(),
            content_type="text/turtle",
            follow_redirects=True)
        self.assertEquals(response.status, "201 CREATED")

        setlmaker = autonomic.SETLMaker()
        results = self.run_agent(setlmaker)

        self.assertTrue(len(results) > 0)

        setlr = autonomic.SETLr()

        print(len(self.app.db))
        for setlr_np in results:
            setlr_results = self.run_agent(setlr, nanopublication=setlr_np)
예제 #5
0
def setUp(runner, file_under_test):
    # Skip setting up disabled tests
    if os.getenv("CI") is not None:
        if runner._testMethodName in disabled:
            print("Skipping test", str(runner._testMethodName),
                  "in CI since it is disabled")
            return
    # Initialization
    runner.login(*runner.create_user("*****@*****.**", "password"))

    xml_str = get_xml(file_under_test)
    encoded_file = b64encode(xml_str.encode('utf8'))

    print("XML length:", len(encoded_file))
    files[file_under_test] = files["template"] % (file_under_test,
                                                  encoded_file)
    upload = files[file_under_test]

    response = runner.client.post("/pub",
                                  data=upload,
                                  content_type="text/turtle",
                                  follow_redirects=True)
    runner.assertEquals(response.status, '201 CREATED')

    response = runner.client.post(
        "/pub",
        data=open('/apps/nanomine-graph/setl/xml_ingest.setl.ttl',
                  'rb').read(),
        content_type="text/turtle",
        follow_redirects=True)
    runner.assertEquals(response.status, '201 CREATED')

    fileid = runner.app.db.value(
        rdflib.URIRef('https://materialsmine.org/nmr/xml/' + file_under_test),
        rdflib.URIRef('http://vocab.rpi.edu/whyis/hasFileID'))
    runner.assertNotEquals(fileid, None)
    setlmaker = autonomic.SETLMaker()
    results = runner.run_agent(setlmaker)

    # confirm this is creating a SETL script for the XML file.
    runner.assertTrue(len(results) > 0)

    setlr = autonomic.SETLr()

    print(len(runner.app.db))
    for setlr_np in results:
        print(setlr_np.serialize(format="trig").decode('utf8'))
        setlr_results = runner.run_agent(setlr, nanopublication=setlr_np)
예제 #6
0
    def test_L168_S3_Luo_2013(self):
        self.login(*self.create_user("*****@*****.**", "password"))
        upload = files['L168_S3_Luo_2013']

        response = self.client.post("/pub",
                                    data=upload,
                                    content_type="text/turtle",
                                    follow_redirects=True)
        self.assertEquals(response.status, '201 CREATED')

        xml_content = self.client.get(
            "/about",
            query_string={
                'uri': 'http://nanomine.org/nmr/xml/L163_S4_Luo_2013.xml'
            }).data
        print("the xml content ", xml_content)

        response = self.client.post(
            "/pub",
            data=open('/apps/nanomine-graph/setl/xml_ingest.setl.ttl',
                      'rb').read(),
            content_type="text/turtle",
            follow_redirects=True)
        self.assertEquals(response.status, '201 CREATED')

        #        xml_content = self.client.get("/about",query_string={'uri':'http://nanomine.org/nmr/xml/L102_S3_Hu_2007.xml'}).data
        #       print("the xml content ", xml_content)

        setlmaker = autonomic.SETLMaker()

        results = self.run_agent(setlmaker)
        self.assertTrue(len(results) > 0)

        setlr = autonomic.SETLr()

        print(len(self.app.db))
        for setlr_np in results:
            print("\nThe setlr_np is : ", setlr_np)
            setlr_results = self.run_agent(setlr, nanopublication=setlr_np)

        nanocomposites = list(
            self.app.db.subjects(
                RDF.type,
                URIRef("http://nanomine.org/ns/PolymerNanocomposite")))
        print(nanocomposites, len(self.app.db))
        self.assertEquals(len(nanocomposites), 1)
예제 #7
0
def setUp(runner, file_under_test):
    # Initialization
    runner.login(*runner.create_user("*****@*****.**", "password"))

    r = requests.get('http://nanomine.org/nmr/xml/' + file_under_test + '.xml')
    j = json.loads(r.text)
    xml_str = j["data"][0]["xml_str"]
    temp = tempfile.NamedTemporaryFile()
    temp.write(xml_str.encode("utf-8"))
    temp.seek(0)

    files[file_under_test] = files["template"].format(temp.name)
    upload = files[file_under_test]

    response = runner.client.post("/pub",
                                  data=upload,
                                  content_type="text/turtle",
                                  follow_redirects=True)
    runner.assertEquals(response.status, '201 CREATED')

    response = runner.client.post(
        "/pub",
        data=open('/apps/nanomine-graph/setl/xml_ingest.setl.ttl',
                  'rb').read(),
        content_type="text/turtle",
        follow_redirects=True)
    runner.assertEquals(response.status, '201 CREATED')

    setlmaker = autonomic.SETLMaker()
    results = runner.run_agent(setlmaker)

    # confirm this is creating a SETL script for the XML file.
    runner.assertTrue(len(results) > 0)

    setlr = autonomic.SETLr()

    print(len(runner.app.db))
    for setlr_np in results:
        setlr_results = runner.run_agent(setlr, nanopublication=setlr_np)

    temp.close()
예제 #8
0
     importer.LinkedData(
         prefix=LOD_PREFIX + '/dbpedia/ontolgy/',
         url='http://dbpedia.org/ontology/%s',
         headers={'Accept': 'text/turtle'},
         format='turtle',
     ),
     #        importer.LinkedData(
     #            prefix = LOD_PREFIX+'/dbpedia/class/',
     #            url = 'http://dbpedia.org/class/%s',
     #            access_url = 'http://dbpedia.org/sparql?default-graph-uri=http://dbpedia.org&query=DESCRIBE+<%s>&format=application/json-ld',
     #            format='json-ld',
     #        )
 ],
 inferencers={
     "SETLr":
     autonomic.SETLr(),
     "Class Subsumption Closure":
     autonomic.Deductor(
         resource="?resource",
         prefixes="",
         where=
         "\t?resource rdfs:subClassOf ?class .\n\t?class rdfs:subClassOf+ ?superClass .",
         construct="?resource rdfs:subClassOf ?superClass .",
         explanation=
         "Since {{class}} is a subclass of {{superClass}}, any class that is a subclass of {{class}} is also a subclass of {{superClass}}. Therefore, {{resource}} is a subclass of {{superClass}}."
     ),
     "Instance Subsumbtion Closure":
     autonomic.Deductor(
         resource="?resource",
         prefixes="",
         where=
예제 #9
0
                         headers={'Accept': 'text/turtle'},
                         format='turtle',
                         postprocess_update='''insert {
             graph ?g {
                 ?article <http://purl.org/dc/terms/abstract> ?abstract.
             }
         } where {
             graph ?g {
                 ?article <http://dbpedia.org/ontology/abstract> ?abstract.
             }
         }
         ''')
 ],
 inferencers={
     "SDDAgent": autonomic.SDDAgent(),
     "SETLr": autonomic.SETLr(),
     "SETLMaker": autonomic.SETLMaker(),
     "CacheUpdater": autonomic.CacheUpdater(),
     "UnitConverter": converter.UnitConverter(),
     #        "HTML2Text" : nlp.HTML2Text(),
     "EntityExtractor": nlp.EntityExtractor(),
     "EntityResolver": nlp.EntityResolver(),
     #        "TF-IDF Calculator" : nlp.TFIDFCalculator(),
     #        "SKOS Crawler" : autonomic.Crawler(predicates=[skos.broader, skos.narrower, skos.related])
 },
 inference_tasks=[
     #        dict ( name="SKOS Crawler",
     #               service=autonomic.Crawler(predicates=[skos.broader, skos.narrower, skos.related]),
     #               schedule=dict(hour="1")
     #              )
 ])