예제 #1
0
def map_property_value(value):
    if hasattr(value, "subject"):
        # If value has subject attribute, this must be Resource,
        # take its subject.
        return value.subject

    if not hasattr(value, "__iter__"):
        return value_to_rdf(value)
    else:
        values = []
        for v in value:
            if hasattr(v, "subject"):
                values.append(v.subject)
            else:
                values.append(value_to_rdf(v))
        return values
예제 #2
0
def test_decimal_to_rdf():
    """
    Test conversion from decimal.Decimal to Literal.
    """

    v = value_to_rdf(decimal.Decimal("12.34"))
    assert type(v) == Literal
예제 #3
0
def test_decimal_to_rdf():
    """
    Test conversion from decimal.Decimal to Literal.
    """

    v = value_to_rdf(decimal.Decimal("12.34"))
    assert type(v) == Literal
예제 #4
0
def map_property_value(value):
    if hasattr(value, "subject"):
        # If value has subject attribute, this must be Resource,
        # take its subject.
        return value.subject

    if not hasattr(value, "__iter__"):
        return value_to_rdf(value)
    else:
        values = []
        for v in value:
            if hasattr(v, "subject"):
                values.append(v.subject)
            else:
                values.append(value_to_rdf(v))
        return values
예제 #5
0
    def get_by(self, **kwargs):
        """ Add filter conditions.

        Arguments are expected in form::

            foaf_name = "John"

        Multiple arguments are supported.
        An example that retrieves all persons named "John Smith"::

            FoafPerson = session.get_class(surf.ns.FOAF.Person)
            for person in FoafPerson.get_by(foaf_name = "John", foaf_surname = "Smith"):
                print person.subject

        """

        params = self._params.copy()
        # Don't overwrite existing get_by parameters, just append new ones.
        # Overwriting get_by params would cause resource.some_attr.get_by()
        # to work incorrectly.
        params.setdefault("get_by", [])
        for name, value in kwargs.items():
            attr, direct = attr2rdf(name)

            if hasattr(value, "subject"):
                # If value has a subject attribute, this must be a Resource,
                # take its subject.
                value = value.subject
            elif not isinstance(value, basestring) and hasattr(
                    value, "__iter__"):
                # Map alternatives
                value = [
                    hasattr(val, "subject") and val.subject
                    or value_to_rdf(val) for val in value
                ]
            else:
                value = value_to_rdf(value)

            params["get_by"].append((attr, value, direct))
        return ResultProxy(params)
예제 #6
0
    def get_by(self, **kwargs):
        """ Add filter conditions.

        Arguments are expected in form::

            foaf_name = "John"

        Multiple arguments are supported.
        An example that retrieves all persons named "John Smith"::

            FoafPerson = session.get_class(surf.ns.FOAF.Person)
            for person in FoafPerson.get_by(foaf_name = "John", foaf_surname = "Smith"):
                print person.subject

        """

        params = self.__params.copy()
        # Don't overwrite existing get_by parameters, just append new ones.
        # Overwriting get_by params would cause resource.some_attr.get_by()
        # to work incorrectly.
        params.setdefault("get_by", [])
        for name, value in kwargs.items():
            attr, direct = attr2rdf(name)

            if hasattr(value, "subject"):
                # If value has a subject attribute, this must be a Resource, 
                # take its subject.
                value = value.subject
            elif hasattr(value, "__iter__"):
                # Map alternatives
                value = map(lambda val: hasattr(val, "subject")
                                        and val.subject
                                        or value_to_rdf(val),
                            value)
            else:
                value = value_to_rdf(value)

            params["get_by"].append((attr, value, direct))
        return ResultProxy(params)
예제 #7
0
    def to_rdf(cls, value):
        """ Convert any value to it's appropriate `rdflib` construct. """

        if hasattr(value, 'subject'):
            return value.subject
        return value_to_rdf(value)
예제 #8
0
    def test_decimal_to_rdf(self):
        """ Test conversion from decimal.Decimal to Literal. """

        import decimal
        v = value_to_rdf(decimal.Decimal("12.34"))
        self.assertEqual(type(v), Literal)
예제 #9
0
파일: __init__.py 프로젝트: tatiana/surf
    def to_rdf(cls, value):
        """ Convert any value to it's appropriate `rdflib` construct. """

        if hasattr(value, 'subject'):
            return value.subject
        return value_to_rdf(value)
예제 #10
0
 def test_decimal_to_rdf(self):
     """ Test conversion from decimal.Decimal to Literal. """
     
     import decimal
     v = value_to_rdf(decimal.Decimal("12.34"))
     self.assertEqual(type(v), Literal)