2014-01-15 2 views
0

데이터 속성에 대해 2 개의 쿼리가 있습니다. 1. 속성 이름 (String)을 알고있는 경우 속성이 이미 스키마에 정의되어 있는지 확인하려면 어떻게해야합니까? 2. datomic을 실험하면서, 콜론 접두어와 콜론 접두어가없는 속성을 datomic이 처리하는 것을 봅니다. 즉 "foo"및 ": foo"라는 속성을 만들면 그것들은 동일하고 동일합니다. 사실입니까? 이것이 한계입니까?콜론 접두사가있는 datomic 속성

나는 groovy.Below와 datomic을 사용하여 속성을 만드는 데 사용되는 코드입니다. 이름과 함께 다른 매개 변수가 입력됩니다.

 


    static def createAttribute(String name, String type, String description, Connection connection) { 
    List schema = [[ 
        ':db/id': Peer.tempid(':db.part/db'), 
        ':db/ident' : name, 
        ':db/valueType': type, 
        ':db/cardinality': ':db.cardinality/one', 
        ':db/doc': description, 
        ':db.install/_attribute': ':db.part/db' 
      ]] 
      connection.transact(schema).get() 

 

내가 속성의 존재를 확인하는 데 사용할 쿼리

 


    def attributeFor(String attributeName, Database db) { 
    db.entity(attributeName).get(':db.install/_attribute') 
    } 

 

나는 속성 이름으로 "foo는"과 "attributeFor"방법 "createAttribute"호출하면 이다 "foo는"속성 이름으로, 나는 결과를 얻는다. 즉 "foo"및 ": foo"는 동일하게 취급됩니다. 콜론 접두어가 포함 된 이름의 속성을 만들고 쿼리하려면 어떻게합니까?

답변

2

Datomic 속성 이름은 문자열이 아니며 edn keywords입니다. 접두사 콜론은 필수이며 (코드에 지정했는지 여부에 관계없이 항상 저장됩니다.) 이름 리터럴을 지원하지 않는 언어 (예 : Java 또는 Groovy)에서 작업 할 때 콜론의 선택은 편의를위한 것입니다.