Todos los productos
Search
Centro de documentos

Intelligent Media Management:Consulta de metadatos de archivos

Última actualización: Sep 04, 2026

Una vez creado un índice de metadatos, puede consultar los metadatos de uno o varios archivos mediante las operaciones de API de Intelligent Media Management (IMM). También es posible realizar consultas mediante búsquedas por campos, búsquedas difusas por palabras clave o búsquedas semánticas en lenguaje natural. Este tema describe cómo consultar los metadatos de archivos.

Requisitos previos

Debe haber creado un índice de metadatos para sus archivos según su escenario de uso. Para obtener más información, consulte Create a metadata index.

Métodos de consulta

A continuación se describen los métodos disponibles para consultar los metadatos de archivos.

Método

Descripción

Consultar los metadatos de un solo archivo

Llame a la operación GetFileMeta para obtener los metadatos de un archivo individual.

Consultar los metadatos de varios archivos

Utilice la operación BatchGetFileMeta para recuperar los metadatos de múltiples archivos simultáneamente.

Realizar una consulta simple

Ejecute la operación SimpleQuery para buscar archivos que cumplan con condiciones específicas y listar sus metadatos ordenados por campo.

También puede usar anidamiento para ejecutar consultas complejas y aplicar operaciones de agregación con el fin de obtener estadísticas y analizar valores de distintos campos. Para ver la lista de campos y operadores compatibles, consulte Supported fields and operators.

Realizar una búsqueda difusa

Invoque la operación FuzzyQuery para encontrar archivos que coincidan con una cadena determinada y mostrar sus metadatos.

IMM busca la cadena especificada dentro de los campos de metadatos extraídos, como el nombre del archivo, la etiqueta, la ruta o las etiquetas personalizadas. Si algún valor de metadato coincide con la cadena, se devuelven todos los metadatos del archivo.

Realizar una búsqueda semántica en lenguaje natural

Use la operación SemanticQuery para consultar metadatos en un conjunto de datos mediante palabras clave en lenguaje natural.

Esta operación admite búsquedas semánticas basadas en los campos Labels, ProduceTime y AddressLine. Por ejemplo, para buscar archivos relacionados semánticamente con "cielo sobre Hangzhou", especifique 'Query=sky over Hangzhou' como condición de consulta.

Consulta de metadatos de un solo archivo

Este ejemplo consulta los metadatos del archivo oss://test-bucket/test-object.jpg perteneciente al conjunto de datos test-dataset en el proyecto test-project.

  • Solicitud de ejemplo

    {
        "ProjectName": "test-project",
        "URI": "oss://test-bucket/test-object.jpg",
        "DatasetName": "test-dataset"
    }
                            
  • Respuesta de ejemplo

    {
        "RequestId": "645FB6D9-5EA0-02C9-B253-****",
        "Files": [
            {
                "ProduceTime": "2020-08-19T17:11:11+08:00",
                "ObjectACL": "default",
                "ContentType": "image/jpeg",
                "ProjectName": "test-project",
                "Size": 22868,
                "URI": "oss://test-bucket/test-object.jpg",
                "Addresses": [
                    {
                        "Language": "zh-Hans",
                        "Township": "Tanggou Town",
                        "AddressLine": "Chenlongzhuang, Tanggou Town, Shuyang County, Suqian City, Jiangsu Province",
                        "Country": "China",
                        "City": "Suqian",
                        "District": "Shuyang",
                        "Province": "Jiangsu"
                    }
                ],
                "ObjectType": "file",
                "CustomLabels": {
                    "category": "Persons"
                },
                "OwnerId": "****",
                "FileModifiedTime": "2021-05-13T10:22:44+08:00",
                "ImageWidth": 270,
                "OSSStorageClass": "Standard",
                "MediaType": "image",
                "ObjectId": "****",
                "CreateTime": "2022-07-06T07:10:18.497753661+08:00",
                "Filename": "1.jpg",
                "Labels": [
                    {
                        "CentricScore": 0.921999990940094,
                        "Language": "zh-Hans",
                        "LabelConfidence": 1,
                        "LabelName": "Hairstyle",
                        "LabelLevel": 2,
                        "ParentLabelName": "Daily behavior"
                    },
                    ...
                ],
                "Orientation": 1,
                "Figures": [
                    {
                        "Beard": "none",
                        "MaskConfidence": 0.6959999799728394,
                        "Gender": "female",
                        "Boundary": {
                            "Left": 70,
                            "Top": 75,
                            "Height": 134,
                            "Width": 101
                        },
                        ...
                    }
                ],
                "EXIF": "...",
                "ContentMd5": "HZwoCnxPZ/fvhz4oRJ****",
                "ImageHeight": 270,
                "ImageScore": {
                    "OverallQualityScore": 0.6140000224113464
                },
                "ETag": "\"1D9C280A7C4F67F7EF873E28449D****\"",
                "DatasetName": "test-dataset",
                "FileHash": "\"1D9C280A7C4F67F7EF873E2****\"",
                "UpdateTime": "2022-07-06T07:10:18.497753661+08:00",
                "OSSCRC64": "5634447745650079669",
                "OSSTaggingCount": 0,
                "LatLong": "34.000000,119.000000",
                "OSSObjectType": "Normal"
            }
        ]
    }
  • Código de ejemplo completo (SDK de IMM para Python V1.27.3)

    # -*- coding: utf-8 -*-
    
    import os
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client(
            access_key_id: str,
            access_key_secret: str,
        ) -> imm20200930Client:
            """
            Use your AccessKey ID and AccessKey secret to initialize the client. 
            @param access_key_id:
            @param access_key_id:
            @param access_key_secret:
            @return: Client
            @throws Exception
            """
            config = open_api_models.Config(
                access_key_id=access_key_id,
                access_key_secret=access_key_secret
            )
            # Specify the endpoint. 
            config.endpoint = f'imm.cn-beijing.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main() -> None:
            # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. 
            # For security reasons, we recommend that you do not embed your AccessKey pair in your project code. 
            # In this example, the AccessKey pair is obtained from the environment variables to implement identity verification for API access. For information about how to configure environment variables, visit https://www.alibabacloud.com/help/en/imm/developer-reference/configure-environment-variables. 
            imm_access_key_id = os.getenv("AccessKeyId")
            imm_access_key_secret = os.getenv("AccessKeySecret")
            client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
            get_file_meta_request = imm_20200930_models.GetFileMetaRequest(
                project_name='test-project',
                dataset_name='test-dataset',
                uri='oss://test-bucket/test-object.jpg'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # Print the response of the API operation. 
                response = client.get_file_meta_with_options(get_file_meta_request, runtime)
                print(response.body.to_map())
            except Exception as error:
                # Print the error message if necessary. 
                UtilClient.assert_as_string(error.message)
                print(error)
    
    if __name__ == '__main__':
        Sample.main()

Consulta de metadatos de varios archivos

Este ejemplo consulta los metadatos de los archivos oss://test-bucket/test-object1.jpg y oss://test-bucket/test-object2.jpg pertenecientes al conjunto de datos test-dataset en el proyecto test-project.

  • Solicitud de ejemplo

    {
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "URIs": "[\"oss://test-bucket/test-object.jpg\", \"oss://test-bucket/test-object2.jpg\"]"
    }
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

  • Código de ejemplo completo (SDK de IMM para Python V1.27.3)

    # -*- coding: utf-8 -*-
    
    import os
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client(
            access_key_id: str,
            access_key_secret: str,
        ) -> imm20200930Client:
            """
            Use your AccessKey ID and AccessKey secret to initialize the client. 
            @param access_key_id:
            @param access_key_secret:
            @return: Client
            @throws Exception
            """
            config = open_api_models.Config(
                access_key_id=access_key_id,
                access_key_secret=access_key_secret
            )
            # Specify the endpoint. 
            config.endpoint = f'imm.cn-beijing.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main() -> None:
            # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. 
            # For security reasons, we recommend that you do not embed your AccessKey pair in your project code. 
            # In this example, the AccessKey pair is obtained from the environment variables to implement identity verification for API access. For information about how to configure environment variables, visit https://www.alibabacloud.com/help/en/imm/developer-reference/configure-environment-variables. 
            imm_access_key_id = os.getenv("AccessKeyId")
            imm_access_key_secret = os.getenv("AccessKeySecret")
            client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
            batch_get_file_meta_request = imm_20200930_models.BatchGetFileMetaRequest(
                project_name='test-project',
                dataset_name='test-dataset',
                uris=[
                    'oss://test-bucket/test-object1.jpg',
                    'oss://test-bucket/test-object2.jpg'
                ]
            )
            runtime = util_models.RuntimeOptions()
            try:
                # Print the response of the API operation. 
                response = client.batch_get_file_meta_with_options(batch_get_file_meta_request, runtime)
                print(response.body.to_map())
            except Exception as error:
                # Print the error message if necessary. 
                UtilClient.assert_as_string(error.message)
                print(error)
    
    if __name__ == '__main__':
        Sample.main()

Ejecución de una consulta simple

Ejemplo 1

A continuación se detallan las condiciones de la consulta:

  • Nombre del proyecto: test-project

  • Nombre del conjunto de datos: test-dataset

  • Tipo de archivo: imagen

  • Ordenamiento de resultados: ascendente por tamaño de archivo

  • Número máximo de resultados devueltos: 100

A continuación se muestra un ejemplo:

  • Solicitud de ejemplo

    {
        "Query": "{\"Field\": \"ContentType\", \"Operation\": \"prefix\", \"Value\": \"image\"}",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset"
        "Sort": "Size",
        "Order": "asc",
        "MaxResults": 100
    }
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

  • Código de ejemplo completo (SDK de IMM para Python V1.27.3)

    # -*- coding: utf-8 -*-
    
    import os
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client(
            access_key_id: str,
            access_key_secret: str,
        ) -> imm20200930Client:
            """
            Use your AccessKey ID and AccessKey secret to initialize the client. 
            @param access_key_id:
            @param access_key_secret:
            @return: Client
            @throws Exception
            """
            config = open_api_models.Config(
                access_key_id=access_key_id,
                access_key_secret=access_key_secret
            )
            config.endpoint = f'imm.cn-beijing.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main() -> None:
            # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. 
            # For security reasons, we recommend that you do not embed your AccessKey pair in your project code. 
            # In this example, the AccessKey pair is obtained from the environment variables to implement identity verification for API access. For information about how to configure environment variables, visit https://www.alibabacloud.com/help/en/imm/developer-reference/configure-environment-variables. 
            imm_access_key_id = os.getenv("AccessKeyId")
            imm_access_key_secret = os.getenv("AccessKeySecret")
            client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
            request = imm_20200930_models.SimpleQueryRequest()
            params = {
                # Specify the query conditions 
                "Query": {"SubQueries": [{"Field": "ContentType", "Operation": "eq", "Value": "image/jpeg"}, {"Field": "Size", "Operation": "gt", "Value": "10485760"}, {"Field": "CustomLabels.category", "Operation": "eq", "Value": "Persons"}], "Operation": "and"},
                # Specify the name of the IMM project.
                "ProjectName": "test-project",
                # Specify the name of the dataset.
                "DatasetName": "test-dataset",
                # Specify the sorting field. 
                "Sort": "Size",
                # Specify the sorting order. 
                "Order": "asc",
                # Set the maximum number of query results to 100. 
                "MaxResults": 100
            }
            request.from_map(params)
            runtime = util_models.RuntimeOptions()
            try:
                # Print the response of the API operation. 
                response = client.simple_query_with_options(request, runtime)
                print(response.body.to_map())
            except Exception as error:
                # Print the error message if necessary. 
                UtilClient.assert_as_string(error.message)
                print(error)
    
    if __name__ == '__main__':
        Sample.main()

Ejemplo 2

A continuación se detallan las condiciones de la consulta:

  • Nombre del proyecto: test-project

  • Nombre del conjunto de datos: test-dataset

  • Tipo de archivo: imagen

  • Tamaño de archivo: mayor que 10 MB

  • Etiquetas personalizadas (CustomLabels.category): Persons

  • Ordenamiento de resultados: ascendente por tamaño de archivo

  • Número máximo de resultados devueltos: 100

A continuación se muestra un ejemplo:

  • Solicitud de ejemplo

    {
        "Query": "{\"SubQueries\": [{\"Field\": \"ContentType\", \"Operation\": \"prefix\", \"Value\": \"image\"}, {\"Field\": \"Size\", \"Operation\": \"gt\", \"Value\": \"10485760\"}, {\"Field\": \"CustomLabels.category\", \"Operation\": \"eq\", \"Value\": \"Persons\"}], \"Operation\": \"and\"}",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Sort": "Size",
        "Order": "asc",
        "MaxResults": 100
    }                       
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

Ejemplo 3

A continuación se detallan las condiciones de la consulta:

  • Nombre del proyecto: test-project

  • Nombre del conjunto de datos: test-dataset

  • Ruta del archivo: oss://test-bucket/

  • Tamaño de archivo: mayor que 10 MB

  • Etiquetas (Labels.LabelName): "TV" o "Stereo"

  • Ordenamiento de resultados: ascendente por tamaño de archivo

  • Número máximo de resultados devueltos: 100

A continuación se muestra un ejemplo:

  • Solicitud de ejemplo

    {
        "Query": "{\"SubQueries\":[{\"Field\":\"URI\",\"Value\":\"oss://test-bucket/\",\"Operation\":\"prefix\"},{\"Field\":\"Size\",\"Value\":\"10485760\",\"Operation\":\"gt\"},{\"SubQueries\":[{\"Field\":\"Labels.LabelName\",\"Value\":\"TV\",\"Operation\":\"eq\"},{\"Field\":\"Labels.LabelName\",\"Value\":\"Stereo\",\"Operation\":\"eq\"}],\"Operation\":\"or\"}],\"Operation\":\"and\"}",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Sort": "Size",
        "Order": "asc",
        "MaxResults": 100
    }
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

Ejemplo 4

A continuación se detallan las condiciones de la consulta:

  • Nombre del proyecto: test-project

  • Nombre del conjunto de datos: test-dataset

  • Tipo de archivo: imagen

  • Tamaño de archivo: mayor que 10 MB

  • Etiquetas personalizadas (CustomLabels.category): Persons

  • Resultado devuelto: tamaño total de los archivos coincidentes

A continuación se muestra un ejemplo:

  • Solicitud de ejemplo

    {
        "Query": "{\"SubQueries\": [{\"Field\": \"ContentType\", \"Operation\": \"eq\", \"Value\": \"image/jpeg\"}, {\"Field\": \"Size\", \"Operation\": \"gt\", \"Value\": \"10485760\"}, {\"Field\": \"CustomLabels.category\", \"Operation\": \"eq\", \"Value\": \"Persons\"}], \"Operation\": \"and\"}",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Aggregations": "[{\"Field\":\"Size\",\"Operation\":\"sum\"}]"
    }
  • Respuesta de ejemplo

    {
        "RequestId": "0FB9BA35-E16B-0DFE-BD52-****",
        "Aggregations": [
            {
                "Field": "Size",
                "Value": 10485760,
                "Operation": "sum"
            }
        ]
    }

Ejemplo 5

A continuación se detallan las condiciones de la consulta:

  • Nombre del proyecto: test-project

  • Nombre del conjunto de datos: test-dataset

  • Tamaño de archivo: mayor que 10 MB

  • Rostros (Figures.Age y Figures.Gender): edad y género

  • Ordenamiento de resultados: ascendente por tamaño de archivo

  • Número máximo de resultados devueltos: 100

A continuación se muestra un ejemplo:

  • Solicitud de ejemplo

    {
        "Query": "{\"Operation\":\"not\",\"SubQueries\":[{\"Operation\":\"nested\",\"SubQueries\":[{\"Operation\":\"and\",\"SubQueries\":[{\"Field\":\"Figures.Age\",\"Operation\":\"gt\",\"Value\":\"36\"},{\"Field\":\"Figures.Gender\",\"Operation\":\"eq\",\"Value\":\"male\"},{\"Field\":\"Size\",\"Operation\":\"gt\",\"Value\":\"10485760\"}]}]}]}",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Sort": "Size",
        "Order": "asc",
        "MaxResults": 100
    }
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

Ejemplo 6

A continuación se detallan las condiciones de la consulta:

  • Nombre del proyecto: test-project

  • Nombre del conjunto de datos: test-dataset

  • Tipo de archivo: imagen

  • Tamaño de archivo: mayor que 10 MB

  • Etiquetas personalizadas (CustomLabels.category): existencia

  • Resultado devuelto: tamaño total de los archivos coincidentes

A continuación se muestra un ejemplo:

  • Solicitud de ejemplo

    {
        "Query": "{\"SubQueries\": [{\"Field\": \"ContentType\", \"Operation\": \"eq\", \"Value\": \"image/jpeg\"}, {\"Field\": \"Size\", \"Operation\": \"gt\", \"Value\": \"10485760\"}, {\"Field\": \"CustomLabels.category\", \"Operation\": \"exist\"}], \"Operation\": \"and\"}",
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Aggregations": "[{\"Field\":\"Size\",\"Operation\":\"sum\"}]"
    }
  • Respuesta de ejemplo

    {
        "RequestId": "0FB9BA35-E16B-0DFE-BD52-****",
        "Aggregations": [
            {
                "Field": "Size",
                "Value": 10485760,
                "Operation": "sum"
            }
        ]
    }

Ejecución de una búsqueda difusa

Este ejemplo busca archivos que coinciden con la cadena jpg en el conjunto de datos test-dataset del proyecto test-project.

  • Solicitud de ejemplo

    {
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Query": "jpg"
    }
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

  • Código de ejemplo completo (SDK de IMM para Python V1.27.3)

    # -*- coding: utf-8 -*-
    
    import os
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client(
            access_key_id: str,
            access_key_secret: str,
        ) -> imm20200930Client:
            """
            Use your AccessKey ID and AccessKey secret to initialize the client. 
            @param access_key_id:
            @param access_key_secret:
            @return: Client
            @throws Exception
            """
            config = open_api_models.Config(
                access_key_id=access_key_id,
                access_key_secret=access_key_secret
            )
            config.endpoint = f'imm.cn-beijing.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main() -> None:
            # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. 
            # For security reasons, we recommend that you do not embed your AccessKey pair in your project code. 
            # In this example, the AccessKey pair is obtained from the environment variables to implement identity verification for API access. For information about how to configure environment variables, visit https://www.alibabacloud.com/help/en/imm/developer-reference/configure-environment-variables. 
            imm_access_key_id = os.getenv("AccessKeyId")
            imm_access_key_secret = os.getenv("AccessKeySecret")
            client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
            fuzzy_query_request = imm_20200930_models.FuzzyQueryRequest(
                # Specify the name of the IMM project. 
                project_name='test-project',
                # Specify the name of the dataset. 
                dataset_name='test-dataset',
                # Specify the keyword. 
                query='jpg'
            )
            runtime = util_models.RuntimeOptions()
            try:
                # Print the response of the API operation. 
                response = client.fuzzy_query_with_options(fuzzy_query_request, runtime)
                print(response.body.to_map())
            except Exception as error:
                # Print the error message if necessary. 
                UtilClient.assert_as_string(error.message)
                print(error)
    
    if __name__ == '__main__':
        Sample.main()

Ejecución de una búsqueda semántica en lenguaje natural

Este ejemplo busca archivos relacionados con pandas en Chengdu en julio de 2020 en el conjunto de datos test-dataset del proyecto test-project.

  • Solicitud de ejemplo

    {
        "ProjectName": "test-project",
        "DatasetName": "test-dataset",
        "Query": "Pandas in Chengdu in July 2020"
        "MaxResults": 100
    }
  • Respuesta de ejemplo (Consulte la respuesta de ejemplo en la sección Query the metadata of a single file)

  • Código de ejemplo completo (SDK de IMM para Python V1.27.3)

    # -*- coding: utf-8 -*-
    
    import os
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client(
            access_key_id: str,
            access_key_secret: str,
        ) -> imm20200930Client:
            """
            Use your AccessKey ID and AccessKey secret to initialize the client. 
            @param access_key_id:
            @param access_key_secret:
            @return: Client
            @throws Exception
            """
            config = open_api_models.Config(
                access_key_id=access_key_id,
                access_key_secret=access_key_secret
            )
            config.endpoint = f'imm.cn-beijing.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main() -> None:
            # The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. 
            # For security reasons, we recommend that you do not embed your AccessKey pair in your project code. 
            # In this example, the AccessKey pair is obtained from the environment variables to implement identity verification for API access. For information about how to configure environment variables, visit https://www.alibabacloud.com/help/en/imm/developer-reference/configure-environment-variables. 
            imm_access_key_id = os.getenv("AccessKeyId")
            imm_access_key_secret = os.getenv("AccessKeySecret")
            client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
            semantic_query_request = imm_20200930_models.SemanticQueryRequest(
                query='Pandas in Chengdu in July 2020',
                project_name='test-project',
                dataset_name='test-dataset',
                max_results=100
            )
            runtime = util_models.RuntimeOptions()
            try:
                # Print the response of the API operation. 
                response = client.semantic_query_with_options(semantic_query_request, runtime)
                print(response.body.to_map())
            except Exception as error:
                # Print the error message if necessary. 
                UtilClient.assert_as_string(error.message)
                print(error)
    
    if __name__ == '__main__':
        Sample.main()